Eclipse Java Formatter。カーリーブレースの前の新しいラインですが、後はそうではありません
質問
私たちはここで非常に奇妙なコーディング慣習をしていますが、私は自分が望むことをするためにEclipseのJava Formatterを設定することができませんでした。大会は言う:
- 巻き毛のブレースの前」{"常に新しい行があるはずです
更新]「{"がラインブレークであるかどうかにかかわらず、私たちの条約にはルールがありません。例では、実際にラインブレイクを使用しています(そして、これまで見たほぼすべてのコンベンションは、「{"と"}」の後に常にラインブレークであるべきだと言っているか、暗示しています)。したがって、サンプル1と2はどちらも「構文的に正しい」です。 [/アップデート
これがコードを吹き飛ばすと、私たちのチームはこのようなコードを書くことに決めました(いいえ、これは私の選択ではありませんでした!):
public void methode(final boolean b)
{ if (b)
{ do.something();
}
else
{ do.somethingElse();
}
}
しかし、フォーマッタでは、これを手に入れることができました。
public void methode(final boolean b)
{
if (b)
{
do.something();
}
else
{
do.somethingElse();
}
}
またはこれ:
public void methode(final boolean b) {
if (b) {
do.something();
}
else {
do.somethingElse();
}
}
「{」の前にラインを破るようにフォーマッタに伝える方法はありますか?私は最初のスタイルがひどいことを知っています、そして、私は最後の2つのうちの1つを使うことを喜んでいますが、これは会社の決定です。
解決
したがって、ここにこのトピックに関する情報があります。私はもう少し研究をしました。ここで憎むべきブレーススタイル(サンプル1)には次の名前があります。 Horstman Brace Style またはこちら ホルストマン. 。 K&RとAllman(サンプル2)スタイルからの利点を組み合わせているため、それを擁護する人々の小さなグループがあります。ブレースが並んでおり、スペースの「無駄」はありません。
しかし、これだけが真実ではありません。このスタイルはVCSにとって惨めです。オープニングブレースと最初のステートメントの間にラインを追加する必要がある場合は、まずラインを壊して新しいラインを置く必要があります。差分またはマージでは、「1行が追加された」ではなく、「1つの線が2行で交換されました」が表示されます。しかし、実際には古い声明はあなたによって変更されました。
したがって、このスタイルを使用するのではなく、別の議論。
他のヒント
コードフォーマッタの関連部分をオフにして、代わりにテンプレートを使用してください。たとえば、入力するとき
private_
Ctrl+スペースを押すと、private_methodテンプレートが呼び出されます。その後、プライベートテンプレートをこのようなものに変更できます -
private ${return_type} ${name}(${})
{ ${cursor}
}
他のブロックステートメントと同様のことを行う必要があり、テンプレートをより頻繁に使用するためにコーディングスタイルを変更する必要がありますが、機能する可能性があると思います。