
关于单行语句是否应该使用花括号存在激烈的争论。
在 C++、C#、Java 和 Javascript 中,不带花括号的单行语句是有效的,有些人利用这个特性,而另一些人则不这样做。
例如
if(ifTrue)
MowTheLawn();
for(var index; index > 10; index++)
ChopWood();
foreach(var dollar in money)
BuyLollipop();
while(untilTheEnd)
Read();
反对单行花括号的论点
反对花括号的论点是它的语法更简洁,需要输入的字符更少,而且是有效的语法。为什么不利用它呢?
支持单行花括号的论点
支持花括号的论点是一致性、更少的错误和更自然的心理解析。
在 Jon Abrams 撰写的题为 单行 ‘if’ 语句 的文章中,Jon 解释了苹果 TLS 实现中的一个缺陷是如何由于没有花括号的单行 if 语句而引入的。Jon 继续说道,虽然在单行语句中省略花括号更简洁,但防止缺陷比简洁性更重要。
Jon 提出了一个折中方案,允许单行语句如果它们真正在一行上:
if(ifTrue) MowTheLawn();
我赞同 Jon 的观点,在单行中省略花括号不值得它提供的好处。它迫使软件工程师考虑两种有效语法的变体。这可能看起来不那么糟糕,但每次遇到 if 语句时都要做出这种判断是很费神的。下一个效果是工程师节省了几次按键,但将解析代码的负担传递给了未来的读者。
对于 C# 软件工程师,微软在他们的编码约定中已经表明了立场,要求使用花括号。
当我们在所有情况下都使用花括号,无论行数多少,什么在作用域内什么在作用域外都非常清楚。这使得代码不太容易出错且更一致,虽然有些人可能会争论这一点,但我发现它更容易阅读。
作者:Chuck Conway 专注于软件工程和生成式人工智能。在社交媒体上与他联系:X (@chuckconway) 或访问他的 YouTube。