web-dev-qa-db-ja.com

自動フォーマットを使用してEclipseでコードをフォーマットすることは良い考えですか

私はコーディングにEclipseを使用しており、使用する言語はJavaです。オートフォーマッタ(CTRL + SHIFT + F)を使用して、コードを適切にフォーマットするように誰かから提案された後、このコマンドはコードをフォーマットしますが、全体的な外観が奇妙になり、実際にはあまり読みにくいと感じることがあります。

これは推奨されることですか?そうでない場合、Eclipseでコードをフォーマットする方が良いのは何ですか?

20
Ankit

厳密なコードのフォーマットルールは、複数の開発者がバージョン管理システムを使用して同じコードで作業する場合に役立ちます。同じコードがマージツールで異なるように見えるため、異なる開発者が異なるフォーマットルールを持っている場合、マージは面倒な場合があります。

Eclipse(または適切なIDE)には、設定セクション(Java>コードスタイル>フォーマッター)でカスタマイズできるコードフォーマットルールがあります。好きなものを選択してください。 Java標準コード規則 を見てください。多くのオープンソースプロジェクトには、Eclipseフォーマッタで適用できる独自のコード規則もあります。

さらに、CodeStyle、PMD、Findbugsなどの標準ツールがあり、追加のルールを適用して、一般的な(低レベルの)アンチパターンやミスを回避できます。

34
bangnab

オートフォーマッタは非常に便利です。コードのフォーマット方法について常にマイクロデシジョンをとるのではなく、エラーが発生しやすく、「認識の摩擦」を引き起こすものです。フォーマットルールを設定して、Eclipseにコードをフォーマットさせることができます(理想的には、「保存アクション」を使用して自動的に) )。もちろん、これには、一貫したフォーマットのコードベースが必要です。または、設定したルールに従ってコードを再フォーマットする権限が必要です。

「autoformat-on-save」を有効にすることは、インクリメンタルコンパイルを行うのと少し似ています。これにより、コードのフォーマットや構文などのささいな問題を気にすることなく、コード自体に集中することができます。

しかし、はい。オートフォーマッタは、適切にフォーマットされたテーブルを台無しにすることがあります。そのような場合は「オン/オフタグ」を使用します。これらは、コードフォーマットプロファイルの[オン/オフタグ]タブで設定されます。それらを使用して、コード内の領域を自動的にフォーマットされないように除外できます。

// @formatter:off

... my nicely formatted table here ...

// @formatter:on
24
JesperE

それが推奨されるかどうかは、あなたが尋ねる人に依存します。

自分でコードをフォーマットする方が好きだと想像できますが、結局のところ、自分にとって何が最も読みやすく、最も読みやすいかはわかっています。プラスの面では、思いやりのある人であれば、他の人間にも読みやすくすることができます。

マシンにはその種の先見性がなく、厳密な規則に従ってフォーマットしたとしても、コードを少し混乱したように見せることができます(あなたが言ったように)。

優れたIDEまたはツールは、多くの場合、コードをフォーマットするのにまともな仕事をすることができますが、常にできるだけ読みやすくするわけではありません。

だから、私のアドバイス:他の誰かからコードを受け取らない限りそれを使わないでください、そうでなければそれを読めないほどの混乱です。

5
Timothy Groote

すべてのソースファイルで一貫したスタイルを使用するために、常にそれを使用する必要があります。これにより、フォーマットを手動で調整するために通常費やす時間を大幅に節約できます。

Javaフォーマッタはかなりうまく機能し、完全にカスタマイズ可能です。デフォルトの設定(完全に理解できます)に同意しない場合は、フォーマッタを独自のスタイル設定または使用する標準は何でも、Java/Code Style/Formatterの設定で行うことができます。

フォーマッターは、単独で作業していない場合にさらに便利です。あなたとあなたのチームメンバーは、あなたが完璧なコードスタイル™であるとあなたが考えるものに同意しない可能性が非常に高いです。その場合は、共通のベースに同意し、この特定のコードスタイリングのフォーマッタルールを1回だけ定義する必要があります。そうすれば、誰もがフォーマットのショートカットにアクセスでき、すべてが合意されたスタイルに適合します。そうすれば、あなたの個人的な好み(執筆時)が邪魔になりません。また、フォーマッターのスタイル設定はEclipseのプロジェクトファイルに保存できるため、プロジェクトごとに異なるフォーマッターを使用することもできます。

5
poke

保存時にコードを自動的にフォーマットするのが好きですが(実際、自分の個人プロジェクトで有効にしました)。 Eclipseフォーマッターにはいくつかの重大なバグがあるため、Eclipseベースの製品を使用しているプロジェクトチームではこの方法を完全には推奨できないことがわかりました。

特に、「コードのクリーンアップ」と「フォーマッタ」を有効にしている場合、インデントは保存のたびに固定/固定解除されます。

Eclipseの新しいバージョンごとにフォーマッターが変更される可能性がありますが、JavaDocsが*の後に最終的にその余分なスペースを削除するなどの重要な変更が導入されますが、Heliosや多くの企業が古いバージョンを使用した後に導入されましたHeliosをベースとして使用するEclipseのRationalソフトウェアバージョン。

Eclipseによって提供されるコードフォーマッターは、実際には明示的に CodeFormatter javadoc と明記されているAPIごとに拡張できません。

このクラスは、クライアントによってサブクラス化されることを意図していません。

確かに、私はまだ非営利的な代替案をまだ見つけていません。 Jalopyは何年も更新されておらず、githubのフォークはまだ整理されていないため、それらを推奨することはできません。また、Eclipseを統合するための更新サイトもありません。実際、Jalopyを使用してcleanpom-maven-pluginを実行したのと同じように、ビルドの一部としてコードのフォーマットを作成することを計画していましたが、Jalopyの更新が不足しているため、そのアイデアは途方に暮れました。

0