大括号的此约定的名称是什么?

2022-09-04 05:06:02

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

Sun明确指出,正确的声明是:

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

    Sample(int i, int j) {
        ....
    }
}

然而,我越来越多地看到这种说法(即使在书中):

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

    Sample(int i, int j) 
    {
        ....
    }
}

我知道,一个公约只是一个公约,只要你遵循一个公约,一切都很好。我只是在寻找后一种声明遵循什么惯例的答案?


答案 1

这是一种称为 ANSI 样式的标准样式约定。这在Java以外的其他语言中也很常见。


答案 2

正如你所说,你已经看过很多次了 - 这难道不会使它成为一个约定本身,无论该约定是否有单一的来源或名称?它很容易描述,我认为它不需要特定的归因。维基百科的“缩进样式”页面称它为Allman Style或ANSI样式,但坦率地说,我已经使用它多年而没有听说过这个名字,我不认为知道这个名字会改变我编码:)

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