除了可读性之外,当使用和不使用括号编写单行循环/条件语句时,性能或编译时间是否有任何差异?
例如,以下之间是否有任何区别:
if (a > 10)
a = 0;
和
if (a > 10)
{
a = 0;
}
?
当然性能上没有区别。但是引入错误的可能性是有区别的:
if (a>10)
a=0;
如果有人扩展代码并稍后编写,
if (a>10)
a=0;
printf ("a was reset\n");
由于缺少大括号,这将始终被打印。有些人要求你总是使用大括号来避免这种错误。
与几个答案相反,在编译时存在有限但可以忽略不计的性能差异。运行时任何类型的差异都为零。
不,没有区别,编译器会去掉无意义的大括号、换行符等。
编译时间将略有不同,但如此微小,以至于您阅读此答案所花费的时间远远多于您恢复编译速度的时间。随着计算能力的增加,这个成本会进一步下降,但降低可读性的成本不会。
简而言之,做可读的事情,它在任何其他意义上都没有任何有用的区别。
机器代码不包含这样的大括号。编译后就没有了{}
。使用最易读的形式。
好吧,它们在运行时当然没有区别。但是为了维护您的代码,您当然应该使用第二种方式。
为什么我这么说是,假设将来,您需要在块中添加更多行来扩展它们。然后,如果您将第一种方式合并到旧代码中,那么您必须在添加一些新代码之前添加。在第二种情况下您不需要这样做。if-else
braces
因此,将来向第二种方式添加代码比向第一种方式添加代码要容易得多。
此外,如果您使用的是第一种方式,您会出现输入错误,例如semi-colon
在 your 之后if
,如下所示:-
if (a > 0);
System.out.println("Hello");
因此,您可以看到您的Hello
将始终被打印出来。如果您已将这些错误curly braces
附加到您的if
.
这取决于其余的编码指南。如果左大括号始终单独在一条线上,我认为放下大括号没有任何问题。但是,如果左大括号位于if
行尾,我发现在添加内容时很容易忽略。所以我会去:
if ( a > 10 ) {
a = 0;
}
无论行数如何,或者:
if ( a > 10 )
{
// several statements...
}
和:
if ( a > 10 )
a = 0;
当只有一个语句时。然而,重要的是所有代码都是一致的。如果您正在处理使用几种不同样式的现有代码库,我总是在新代码中使用大括号,因为您不能指望代码样式来确保它们是否存在,它们会在高度可见的位置。