Skip to content

文章

要不要花括号?

2019年10月14日 • 3 分钟阅读

要不要花括号?

关于单语句是否应该使用花括号,存在激烈的争论。

在 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 撰写的题为 Single-line ‘if’ statements 的文章中,Jon 解释了 Apple 的 TLS 实现中的一个缺陷是如何由于没有花括号的单行 if 语句而引入的。Jon 进一步指出,虽然在单行语句中省略花括号可以使代码更简洁,但防止缺陷比简洁性更重要。

Jon 提出了一个折中方案,允许单行语句,但前提是它们确实在单行上:

if(ifTrue) MowTheLawn();

我赞同 Jon 的观点,在单行中省略花括号不值得它提供的好处。它迫使软件工程师考虑两种有效语法的变体。这似乎不是什么大问题,但每次遇到 if 语句时都要做出这种判断是很费力的。其后果是工程师节省了几次按键,但将负担转移给了未来的代码阅读者。

对于 C# 软件工程师,Microsoft 在他们的 编码约定 中已经表明了立场,要求使用花括号。

当我们在所有情况下都使用花括号,无论有多少行,什么在作用域内,什么在作用域外都非常清楚。这使代码更不容易出错,更加一致。虽然有些人可能会对此有异议,但我发现这样更容易阅读。

作者:Chuck Conway 是一位 AI 工程师,拥有近 30 年的软件工程经验。他构建实用的 AI 系统——内容管道、基础设施代理和解决实际问题的工具——并分享他沿途的学习成果。在社交媒体上与他联系:X (@chuckconway) 或访问他的 YouTubeSubStack

↑ 返回顶部

你可能也喜欢