除了政治和宗教之外,很少有其他话题能比决定将“{”放在哪里更能让编程人员争论的面红耳赤了。
“{”是开头的大括号,表示代码块的开始。由大括号“{}”括起来的代码会一起执行。然而,编程人员会浪费宝贵的时间来争论他们的代码是否应该是这样的:
// Option 1 – Next Line Style
void foo(void)
{
// Some code statements
}
或者
// Option 2 – Same Line Style
void foo(void) {
// Some code statements
}
您可能会想知道,我们到底应该把“{”放在哪里?
如果您看一下uC OS II/III、ThreadX等高质量实时操作系统编写的代码,就会发现它们使用的是选项1。那为什么他们使用此选项呢?
开发人员使用选项1来编写稳健、优质的软件,原因如下:
首先,将左括号放在单独的行上可以清楚地将函数与其主体分开。如果要快速浏览代码,可以更轻松地发现不同代码块的开始和结束位置。
其次,安全关键型系统中使用的高可靠性和传统编码标准都推荐使用这种方法。这些标准发现,将左括号放在下一行可以提高代码质量,并最大限度地减少系统中的缺陷。
最后,使用下一行的样式还可以改善维护工作。当括号垂直对齐时,就更容易在视觉上匹配开头和结尾的括号对。这就减少了在代码中注入缺陷的机会。(可以说,Visual Studio Code等现代工具在这方面也有所帮助。)
如果您看过很多开源代码,或者现在很多“普通”软件开发者写的代码,会发现他们并没有使用下一行样式,而是使用同行样式。为什么他们选择这样呢?
首先,使用同行样式可以节省空间。如果您使用笔记本电脑工作或进行分屏编辑,这种样式可能更合适。或者,如果您觉得少写几行代码能让您成为更好的程序员。(许多程序员都是这种情况)。
其次,现代语言的实践也采用了相同的风格。例如,看看Rust、JavaScript和Python。所有这些语言都主张采用选项2。鉴于许多开发人员在刚开始学习编程时都是学习这些语言,因此使用这种风格对他们来说就变得很自然。
最后,同行样式与工具设置相一致,是许多大型科技公司的首选。他们喜欢同行样式,因为他们:
我经常开玩笑说,我在开发代码时会遇到“中年样式”指南危机。我个人倾向于使用选项1,即下一行样式。我喜欢额外的留白,感觉它更干净、更易读、更稳健。
另一方面,这么多开发人员使用选项2,即同行样式,因此我怀疑强迫他们改变样式是否有意义。毕竟,我也发现自己在使用同行样式,尽管这通常取决于我使用的语言及其推荐的惯例。
根据我的经验,我发现下一行样式确实会绊倒初级工程师。强迫他们重新学习自己的风格有意义吗?还是采用现代语言和工具的风格,帮助他们更快地进入高效的工作生活?
其实最重要的是保持一致,选择哪种风格其实并不重要。无论您选择哪种风格,您都需要做到以下三点:
如果这些工具适合您,您甚至可以按照自己想要的任何风格编写代码,然后让工具进行转换,根据您当时的需求,挑选出两全其美的解决方案。
(原文刊登于EDN姊妹网站Embedded,参考链接:Where should you put the { ?,由Ricardo Xie编译。)