13

我看到有多少开发人员在类名或方法下方使用花括号编写方法和类,这让我感到有些困惑。他们遵循什么惯例?

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) 
    {
        ....
    }
}

而且我知道约定只是约定,只要您遵守约定,一切都很好。我只是在寻找后一个声明遵循什么约定的答案?

4

7 回答 7

28

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

于 2010-12-15T16:30:07.060 回答
12

正如你所说,你已经看到了很多 - 这不是让它本身成为一个约定,无论该约定是否有一个单一的来源或名称?它很容易描述,我认为它不需要特定的归属。Wikipedia 的“缩进样式”页面将其称为Allman 样式或 ANSI 样式,但坦率地说,我多年来一直在使用它,但从未听说过这个名字,而且我认为知道这个名字不会改变我的编码方式:)

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

于 2010-12-15T16:38:38.190 回答
5

见:http ://en.wikipedia.org/wiki/Indent_style

Syrion 将其识别为 ANSI 样式,Sun 遵循 K&R 样式的大括号放置。

Tangent:现在我知道这种被诅咒的风格叫做Whitesmiths 风格

于 2010-12-15T16:32:20.697 回答
5

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

于 2010-12-15T16:33:38.107 回答
3

后者看起来像在 C++ 中非常流行的Allman 缩进样式,但我没有看到它在 Java 中经常使用。

于 2010-12-15T16:33:20.287 回答
3

第二个约定也是 C# 的 Visual Studio 的默认缩进样式(因此相当常见)

于 2010-12-15T16:34:18.110 回答
1

第一个约定节省了宝贵的空间。无论如何,括号匹配都是由编辑器完成的。

于 2010-12-15T16:37:10.823 回答