6

关于如何使用匿名类同时保持与Allman 缩进风格一致的任何建议?我真的不喜欢我想出的任何东西,例如

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

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

3 回答 3

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.
    };
于 2010-12-21T05:06:32.287 回答
1

Allman 风格实际上是对齐 {braces},而不是所有 (braces)。我想如果你愿意,你可以自由地做这两件事,但对我来说,这似乎是问题的根源(比如这个),在可读性方面没有明显的回报。换句话说,一个合乎逻辑的恋物癖:-)

您可以按照http://mbreen.com/javastyle.html上的指南进行操作:“包含带有代码块的声明的语句首先缩进为语句。” 我认为这会将您的示例更改为

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

Clazz bar = (
    new Clazz( )
    {
        // Do stuff.
    });
于 2011-04-30T06:15:45.023 回答
0

这就是我所决定的。

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

而且我只是不再在方法调用中定义匿名类。

于 2011-01-19T01:43:31.817 回答