广告

编程时你会把“{”放在单独一行还是同一行,哪种更好?

2024-05-27 16:59:32 Jacob Beningo 阅读:
“{”是开头的大括号,表示代码块的开始。由大括号“{}”括起来的代码会一起执行。然而,编程人员有时会浪费宝贵的时间来争论他们的代码“{”应该放在哪里···

除了政治和宗教之外,很少有其他话题能比决定将“{”放在哪里更能让编程人员争论的面红耳赤了。GYtednc

“{”是开头的大括号,表示代码块的开始。由大括号“{}”括起来的代码会一起执行。然而,编程人员会浪费宝贵的时间来争论他们的代码是否应该是这样的:GYtednc

// Option 1 – Next Line StyleGYtednc

void foo(void)GYtednc

{GYtednc

    // Some code statementsGYtednc

}GYtednc

或者GYtednc

// Option 2 – Same Line StyleGYtednc

void foo(void) {GYtednc

    // Some code statementsGYtednc

}GYtednc

您可能会想知道,我们到底应该把“{”放在哪里?GYtednc

选项1的案例

如果您看一下uC OS II/III、ThreadX等高质量实时操作系统编写的代码,就会发现它们使用的是选项1。那为什么他们使用此选项呢?GYtednc

开发人员使用选项1来编写稳健、优质的软件,原因如下:GYtednc

首先,将左括号放在单独的行上可以清楚地将函数与其主体分开。如果要快速浏览代码,可以更轻松地发现不同代码块的开始和结束位置。GYtednc

其次,安全关键型系统中使用的高可靠性和传统编码标准都推荐使用这种方法。这些标准发现,将左括号放在下一行可以提高代码质量,并最大限度地减少系统中的缺陷。GYtednc

最后,使用下一行的样式还可以改善维护工作。当括号垂直对齐时,就更容易在视觉上匹配开头和结尾的括号对。这就减少了在代码中注入缺陷的机会。(可以说,Visual Studio Code等现代工具在这方面也有所帮助。)GYtednc

选项2的案例

如果您看过很多开源代码,或者现在很多“普通”软件开发者写的代码,会发现他们并没有使用下一行样式,而是使用同行样式。为什么他们选择这样呢?GYtednc

首先,使用同行样式可以节省空间。如果您使用笔记本电脑工作或进行分屏编辑,这种样式可能更合适。或者,如果您觉得少写几行代码能让您成为更好的程序员。(许多程序员都是这种情况)。GYtednc

其次,现代语言的实践也采用了相同的风格。例如,看看Rust、JavaScript和Python。所有这些语言都主张采用选项2。鉴于许多开发人员在刚开始学习编程时都是学习这些语言,因此使用这种风格对他们来说就变得很自然。GYtednc

最后,同行样式与工具设置相一致,是许多大型科技公司的首选。他们喜欢同行样式,因为他们:GYtednc

  • 欣赏紧凑的代码
  • 重视快速迭代,并相信这种风格可以支持快速迭代
  • 从事网络和移动技术工作

那么您应该把{放在哪里?

我经常开玩笑说,我在开发代码时会遇到“中年样式”指南危机。我个人倾向于使用选项1,即下一行样式。我喜欢额外的留白,感觉它更干净、更易读、更稳健。GYtednc

另一方面,这么多开发人员使用选项2,即同行样式,因此我怀疑强迫他们改变样式是否有意义。毕竟,我也发现自己在使用同行样式,尽管这通常取决于我使用的语言及其推荐的惯例。GYtednc

根据我的经验,我发现下一行样式确实会绊倒初级工程师。强迫他们重新学习自己的风格有意义吗?还是采用现代语言和工具的风格,帮助他们更快地进入高效的工作生活?GYtednc

其实最重要的是保持一致,选择哪种风格其实并不重要。无论您选择哪种风格,您都需要做到以下三点:GYtednc

  • 在样式指南中记录您喜欢的样式
  • 设置您的开发环境以自动使用该样式
  • 自动化您的构建系统,检查并修复任何不符合要求的地方

如果这些工具适合您,您甚至可以按照自己想要的任何风格编写代码,然后让工具进行转换,根据您当时的需求,挑选出两全其美的解决方案。GYtednc

(原文刊登于EDN姊妹网站Embedded,参考链接:Where should you put the { ?,由Ricardo Xie编译。)GYtednc

责编:Ricardo
本文为电子技术设计原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了