2010-12-21 14 views
6

Allman indent styleと一貫性を保ちながら、匿名クラスの使用方法に関する推奨事項はありますか?私は思い付いたものはあまり好きではありません。オールマンスタイルの匿名クラス

// Pass as parameter. 
foo(new Clazz() 
    { 
     // Do stuff. 
    }); 

// Assign to variable. 
Clazz bar = new Clazz() 
      { 
       // Do stuff. 
      }; 
+1

あなたが投稿したものは何ですか?なぜあなたはそれが好きではないのですか? – luke

+0

行終止符は任意の位置に終わり、括弧は垂直方向に整列しません(たとえば、メソッド呼び出しの引数を囲む括弧)。これはAllmanスタイルの目的を無効にします。 – gdejohn

答えて

0

これは私が解決したものです。

Foo foo = new Foo() 
{ 
    // Do stuff. 
}; 

そして、私はちょうどメソッド呼び出しの中で匿名クラスを定義しません。

2

私は自分のコードのために思い付いた最良の妥協点、匿名クラスに、単一のタブ移動のレベルをインデントし、新しい行に閉じ括弧を入れています。

// Pass as parameter. 
foo(new Clazz() 
    { 
     // Do stuff. 
    } 
); 

void func() { 
    foo(new Clazz() 
     { 
      // Do stuff. 
     } 
    ); 
} 

// Assign to variable. 
Clazz bar = new Clazz() 
    { 
     // Do stuff. 
    }; 
+0

私は本当にそれをしません。とにかくありがとう。 – gdejohn

1

オールマンスタイルは本当に{中括弧}を整列させることであり、すべてを(中括弧)整列させることではありません。私はあなたが望むなら自由に両方をすることができると思いますが、読みやすさの明らかな後戻りなしに私にこのような問題の源のように見えます。言い換えれば、論理的なフェティッシュ:-)

http://mbreen.com/javastyle.html: 「コードブロックを含む宣言を含むステートメントは、最初にステートメントとしてインデントされています。私はそれがあなたの例を

に変更すると思います。
foo (new Clazz() 
    { 
     // Do stuff. 
    }); 

Clazz bar = (
    new Clazz() 
    { 
     // Do stuff. 
    });