私はコーディングにEclipseを使用しており、使用する言語はJavaです。自動フォーマッター(CTRL + SHIFT + F)を使用してコードを適切にフォーマットするように誰かから提案された後、このコマンドはコードをフォーマットしますが、時々全体的な外観が奇妙になり、実際には非常に読みにくいと感じます。
これは推奨されることですか?そうでない場合は、Eclipseでコードをフォーマットする方が良いですか?
私はコーディングにEclipseを使用しており、使用する言語はJavaです。自動フォーマッター(CTRL + SHIFT + F)を使用してコードを適切にフォーマットするように誰かから提案された後、このコマンドはコードをフォーマットしますが、時々全体的な外観が奇妙になり、実際には非常に読みにくいと感じます。
これは推奨されることですか?そうでない場合は、Eclipseでコードをフォーマットする方が良いですか?
回答:
厳密なコードフォーマットルールは、複数の開発者がバージョン管理システムを使用して同じコードで作業する場合に役立ちます。同じコードがマージツールで異なるように見えるため、異なる開発者が異なるフォーマットルールを持っている場合、マージは苦痛になります。
Eclipse(またはその点で優れたIDE)には、設定セクション(Java>コードスタイル>フォーマッター)でカスタマイズできるコードフォーマットルールがあります。好きなものを選択してください。また、Java標準コードの規則も確認してください。多くのオープンソースプロジェクトには、Eclipseフォーマッタで強制できる独自のコード規則もあります。
さらに、CodeStyle、PMD、Findbugsなどの標準ツールがあり、追加のルールを適用して、一般的な(低レベルの)アンチパターンとミスを回避できます。
オートフォーマッターは非常に便利だと感じました。エラーを起こしやすく、「認知摩擦」を引き起こすコードのフォーマット方法を常に細かく決定する代わりに、フォーマットルールを設定し、Eclipseにコードをフォーマットさせることができます(理想的には、「アクションを保存」を使用して)。もちろん、これには一貫したフォーマットのコードベースがあるか、セットアップしたルールに従ってコードを再フォーマットする権限が必要です。
「保存時の自動フォーマット」を有効にすると、インクリメンタルコンパイルを行うのと同じようになり、コードの書式設定や構文などの些細な問題に悩まされる代わりに、脳がコード自体に集中できるようになります。
しかし、はい、時々オートフォーマッターはあなたが持っているいくつかのうまくフォーマットされたテーブルを台無しにします。そのような場合、「オン/オフタグ」を使用します。これらは、コードフォーマットプロファイルの[オン/オフタグ]タブで構成されます。それらを使用して、コード内の領域を自動的にフォーマットされないように除外できます。
// @formatter:off
... my nicely formatted table here ...
// @formatter:on
推奨されるかどうかは、誰に尋ねるかによって異なります。
あなたは自分でコードをフォーマットすることを好むと想像することができます、結局のところ、あなたは自分にとって最も読みやすく最も簡単なものを知っています。プラス面として、あなたが思いやりのある人であれば、他の人間にとっても読みやすくすることができます。
マシンにはそのような先見性はなく、(あなたが言ったように)厳密なルールでフォーマットしたとしても、コードを少し混乱させることができます。
優れたIDEまたはツールは、多くの場合、コードをフォーマットするのにかなりまともな仕事をしますが、常に可能な限り読みやすくするわけではありません。
だから、私のアドバイス:あなたが誰か他の人からコードを受け取らない限り、それを使わないでください。そうでなければ、それを読むことはできません。
すべてのソースファイルで一貫したスタイルを使用するように、常に使用する必要があります。これにより、書式設定を手動で調整しようとするのに通常費やす多くの時間も節約できます。
EclipseのJavaフォーマッターは非常に良い仕事をしており、完全にカスタマイズ可能です。デフォルトの設定(これは完全に理解できます)に同意しない場合は、独自のスタイル設定または使用する標準に合わせてフォーマッターを調整する必要があります。これは、Java / Code Style / Formatterの設定で行うことができます。
フォーマッタは、単独で作業していないときにさらに便利です。あなたとあなたのチームメンバーは、あなたが完璧なコードスタイル™だと思うものについて意見が合わない可能性が非常に高いです。その場合、共通のベースに同意し、この特定のコードスタイリングのフォーマッタールールを一度だけ定義する必要があります。そうすれば、誰もがフォーマットショートカットにヒットするだけで、すべてが合意されたスタイルに適合します。そうすれば、あなたの個人的な好み(執筆時)が邪魔になりません。また、フォーマッタスタイルはEclipseのプロジェクトファイルに保存できるため、プロジェクトごとに異なるフォーマッタも使用できることに注意してください。
私は保存時にコードを自動的にフォーマットするのが好きですが(実際、個人プロジェクトで有効にしました)。Eclipseフォーマッタには推奨できないいくつかの重大なバグがあるため、Eclipseベースの製品を使用しているプロジェクトチームではこのプラクティスを完全に推奨できないことがわかりました。
具体的には、「コードクリーンアップ」+「フォーマッター」を有効にしている場合、保存するたびにインデントが固定/固定解除されます。
Eclipseの各新バージョンはフォーマッターを変更する可能性があります(より良い)が、JavaDocsが最終的に余分なスペースを削除するなどの重要な変更を導入します*
が、それはHeliosおよび多くの企業がEclipseの古いRational Softwareバージョンを使用した後に導入されましたHeliosをベースとして使用します。
Eclipseによって提供されるコードフォーマッタは、APIごとに拡張できません。実際、CodeFormatter javadocと明示的に記述されています。
このクラスは、クライアントによってサブクラス化されることを意図していません。
確かに、私はまだ実行可能な非営利的な代替手段を見つけていません。Jalopyは何年も更新されておらず、githubのフォークはまだ整理されていません。Eclipseを統合するための更新サイトもありません。私は実際にJalopyを使用してcleanpom-maven-pluginを実行したのと同じように、ビルドの一部としてコードのフォーマットを作成することを計画していましたが、Jalopyの更新がないため、そのアイデアは道端に落ちました。