2010-12-21 28 views
6

關於如何使用匿名類的建議,同時保持與Allman indent style一致?我真的不喜歡我想出的任何東西,例如Allman風格的匿名類

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

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

你有什麼不對?你爲什麼不喜歡它? – luke 2010-12-21 00:12:37

+0

行結束符以任意位置結束,並且括號不是垂直對齊的(例如括住方法調用參數的括號),這違背了Allman風格的目的。 – gdejohn 2010-12-21 00:20:54

回答

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 2011-01-19 01:44:49

1

Allman風格實際上是對齊{大括號},而不是所有的(括號)。我想如果你願意,你可以自由地做這兩件事,但它看起來像是一個問題的來源(如這個),沒有明確的可讀性回報。換句話說,一個邏輯戀物癖:-)

您可以按照指南http://mbreen.com/javastyle.html: 「包含具有代碼塊聲明的語句首先作爲語句縮進」。我認爲這會改變你的例子

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

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