2010-12-21 21 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. 
    });