根据书Code Complete,括号应该放在第一行(称为控制语句),因为放在第二行会产生误导,因为它不显示代码的逻辑结构。如果从图形的角度来看,第二种方法如下所示:
其中线 AE 代表以下内容,这与此问题中声明的第二种方法类似。
A function foo ()
B {
C print "Hello";
D print "World";
E }
您可以看到具有误导性,因为您无法判断 B 行是否从属于 A 行,或者 B 行是否是其自己的单独语句
编辑:如果图像太抽象,这里快速解释为什么大括号通常与控制语句一起包含在第一行
函数有两个主要元素:
- 控制结构
- 函数的语句
通过将大括号放在第二行(图像中的 B 行),它既不在控制语句中,也不是函数语句的一部分。
编辑 2
IMO,每一行代码都应该有一个目的是节省垂直空间,以便在我的屏幕上一次查看更多行并保留代码的逻辑含义。因此,当大括号与函数声明在同一行时,它就与它打开的语句相关联。但是,当它单独位于一行时(在我的示例中为 B 行)并且它没有缩进以显示从属于函数声明,那么它会破坏代码的逻辑含义,因为它既不与控制结构相关联也不是函数语句。因此,通过将大括号与函数声明放在同一行,那么每一行代码都有一个用途,它包含代码的逻辑含义,并且它节省了我的屏幕空间。
function foo() { // brace is on the same line and it's associated with the statement that it opens
print "Hello"; // this line does something
print "World"; // this line does something
} // this last brace terminates the function which is part of the control construct