除了可读性之外,在使用和不使用brakets编写单行循环/条件语句时,性能或编译时间是否存在差异?
例如,以下内容之间是否存在任何差异:
if (a > 10)
a = 0;
和
if (a > 10)
{
a = 0;
}
答案 0 :(得分:5)
当然,性能没有区别。但引入错误的可能性存在差异:
if (a>10)
a=0;
如果有人扩展代码并稍后写,
if (a>10)
a=0;
printf ("a was reset\n");
由于缺少大括号,因此将始终打印。有些人要求你总是使用大括号来避免这种错误。
答案 1 :(得分:4)
与几个答案相反,编译时存在有限但可忽略的性能差异。在运行时没有任何差异。
答案 2 :(得分:2)
不,没有区别,编译器会删除无意义的大括号,换行符等。
编译时间略有不同,但是如此微不足道,以至于你已经失去了阅读这个答案的更多时间,而不是你将以编译速度回归。随着计算能力的增加,这个成本会进一步下降,但降低可读性的成本却没有。
简而言之,做可读性,在任何其他意义上都没有任何有用的区别。
答案 3 :(得分:2)
机器代码不包含此类大括号。编译后,不再有{}
。使用最易读的形式。
答案 4 :(得分:1)
当然,它们之间在运行时没有区别。 但是为了维护你的代码,你当然应该使用第二种方式。
为什么我这样说,假设将来你需要在你的if-else
块中添加更多行来扩展它们。然后,如果您的第一种方法包含在旧代码中,那么在添加一些新代码之前,您必须添加braces
。在第二种情况下你不需要这样做。
因此,将来第二种方式的代码添加到第一种方式要容易得多。
此外,如果您使用第一种方式,则打算在semi-colon
之后输入错误,例如if
,如下所示: -
if (a > 0);
System.out.println("Hello");
因此,您可以看到您的Hello
将始终打印出来。如果您curly braces
附加if
,则可以轻松删除这些错误。
答案 5 :(得分:-1)
这取决于其他编码指南。我没有看到任何
如果开口括号总是在一条线上,则掉落大括号的问题
通过它自己。如果左大括号位于if
行的末尾,
但是,我发现在添加内容时很容易忽略。所以
我会选择:
if ( a > 10 ) {
a = 0;
}
无论行数,还是:
if ( a > 10 )
{
// several statements...
}
使用:
if ( a > 10 )
a = 0;
只有一个陈述。然而,重要的是 所有代码都是一致的。如果您正在处理现有代码 使用几种不同风格的底座,我总是使用新的支架 代码,因为你不能指望代码风格,以确保它们 在那里,他们会在一个非常明显的位置。