花括号的这个约定是什么名字?

Fra*_*kie 13 java conventions curly-braces

我对开发人员的数量感到有些困惑,我看到在类名或方法下面用花括号编写方法和类.他们遵循什么惯例?

Sun 明确表示正确的声明是:

// this declaration follows sun's conventions
class Sample extends Object {

    Sample(int i, int j) {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,越来越多我认为这被宣称为(甚至在书中):

// this declaration follows a convention I cant identify
class Sample extends Object 
{

    Sample(int i, int j) 
    {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道一个会议只是一个惯例,只要你遵循一个惯例,一切都很好.我只是在寻找后一个宣言遵循什么惯例的答案?

ast*_*asr 28

这是一种称为ANSI样式的标准样式约定.除了Java之外,它在其他语言中也很常见.

  • +1,因为你回答了实际问的问题,而不是在圣战中关于你喜欢的风格. (11认同)
  • 我想补充一点,这被称为"奥尔曼风格".它被错误地归因于ANSI C文档.http://en.wikipedia.org/wiki/Indent_style#Allman_style (3认同)

Jon*_*eet 11

正如你所说的那样,你已经看到了很多东西 - 这不是使它成为一种惯例,无论是否有一个单一的来源或名称的约定?这很容易描述,我认为它不需要特定的归属.维基百科的"缩进样式"页面将其称为Allman Style或ANSI样式,但坦率地说,我已经使用它多年而没有听到这个名字,我不认为知道这个名字会改变我编码的方式:)

与诸如公共类型和方法的命名之类的约定不同,大括号位置对使用代码的编译版本的开发人员没有影响...因此,对于不同的项目和公司来说,对此有不同的看法是可以的(IMO)...同样是否使用空格或制表符,用于缩进的空格数等.我怀疑这就是为什么你看到更多关于支撑(可能是私有变量)的变化而不是常规的其他方面.

  • 好处是使像diff和merge这样的源控制操作更容易.当有人去重新格式化整个文件只是因为他们喜欢一种风格而不是另一种风格时,它可以使源控制工具合并成一种皇家的痛苦. (3认同)

wkl*_*wkl 5

请参阅:http://en.wikipedia.org/wiki/Indent_style

Syrion已将其确定为ANSI风格,Sun遵循K&R支撑放置方式.

Tangent:现在我知道被诅咒的风格被称为Whitesmiths风格

  • 这可能只是一个城市传奇,但我从某个地方回忆起,K&R风格起源于节省代码打印时的空间。 (2认同)

cod*_*441 5

我喜欢第二种约定,因为右括号将直接位于左括号的下方,因此更容易找到。