【问题标题】:Does bracket placement affect readability? [duplicate]括号放置会影响可读性吗? [复制]
【发布时间】:2009-05-21 21:40:42
【问题描述】:

可能的重复:
Formatting of if Statements
Is there a best coding style for identations (same line, next line)?
Best way to code stackoverflow style 'questions' / 'tags' rollover buttons

public void Method {

}

public void Method
{

}

除了个人喜好之外,一种风格比另一种风格有什么好处吗?我曾经对第二种方法发誓,但现在在工作和个人项目中使用第一种。

我所说的可读性是指想象这些方法中的代码 - if/else 等...

【问题讨论】:

  • 为什么不问有关vi或emacs是否更适合编程的相关问题?
  • 谢谢 - 没想到要搜索缩进。 '括号的标签非常稀疏,并没有出现太多结果。

标签: curly-braces


【解决方案1】:

Google C++ Style Guide 建议

返回类型与函数名在同一行,参数在同一行(如果合适)。

函数如下所示:

ReturnType ClassName::FunctionName(Type par_name1, Type par_name2) {
  DoSomething();
  ...
}

WebKit Coding Style Guidelines 建议

函数定义:将每个大括号放在自己的行上。

对:

int main()
{
    ...
}

错误:

int main() {
    ...
}

不过,他们建议其他所有内容都使用大括号。


GNU Coding Standards 建议

将开始 C 函数主体的左大括号放在第一列很重要,这样它们就会开始一个 defun。有几个工具会在第一列中查找开括号以查找 C 函数的开头。这些工具不适用于未以这种方式格式化的代码。

当它们在函数内部时,避免将左大括号、左括号或左括号放在第一列中,这样它们就不会启动一个 defun。如果您发现将该定义视为 defun 很有用,则开始结构体的左大括号可以放在第一列中。

函数定义在第一列中以函数名称开头也很重要。这有助于人们搜索函数定义,也可能有助于某些工具识别它们。因此,使用标准 C 语法,格式如下:

static char *
concat (char *s1, char *s2)
{
  ...
}

或者,如果您想使用传统的 C 语法,请像这样格式化定义:

static char *
concat (s1, s2)        /* Name starts in column one here */
     char *s1, *s2;
{                     /* Open brace in column one here */
  ...
}

如您所见,每个人都有自己的观点。就个人而言,我更喜欢 Perl 风格的大括号-on-same-line-except-for-else,但只要编写代码的每个人都可以合作,那真的没关系。

【讨论】:

    【解决方案2】:

    我认为这完全是主观的,但是,我认为为您的团队建立代码标准并让每个人都使用相同的风格很重要。话虽如此,我喜欢第二个(并让我的团队使用它),因为当它不是您的代码时,它似乎更容易阅读。

    【讨论】:

      【解决方案3】:

      在过去,我们使用第一种样式(K & R 样式),因为屏幕更小,并且代码经常打印在这种称为纸张的东西上。

      现在我们有大屏幕,第二种方法(ANSI 样式)可以更容易地查看您的括号是否匹配。

      请参阅HEREHERE 了解更多信息。

      【讨论】:

        【解决方案4】:

        第一个在行数方面较小(也许这就是为什么开发-Java-书籍倾向于使用该语法)

        第二个是,恕我直言,因为你总是有两个对齐的括号,所以更容易阅读。

        不管怎样,它们都被广泛使用,这是你个人喜好的问题。

        【讨论】:

          【解决方案5】:

          在这个高度情绪化的主题中,我使用 if 语句作为推理的依据。

          if (cond) {
             //code
          }
          

          通过询问 else 语句是什么样的?上面的逻辑扩展是:-

          if (cond) {
             //code   
          } else {
             //more code
          }
          

          这可读吗?我不这么认为,而且它也很丑陋。

          更多行!= 可读性降低。因此,我会选择你的后一种选择。

          【讨论】:

          • Perl 代码往往是“if (cond) { \n \t ... \n } \n else { \n \t ... \n }”,我发现它是简洁和拥挤之间的良好权衡。
          【解决方案6】:

          我个人觉得第二个更易读(对齐的卷曲)。

          团队使用默认设置总是最容易的,因为我和 Visual Studio 都同意这一点,这就是我的论点。 ;-)

          【讨论】:

          • 更准确地说,VS defaults 同意你的观点,但可以根据偏好进行调整。有点奇怪的是 VS 的默认格式配置通常与模板中使用的格式不同。
          • @AntonyWJones 是的,我们同意使用默认值... ;-) 而且,是的,为什么模板不遵循默认值!!!
          【解决方案7】:

          使用第一个选项,您的代码行数将大大减少。 :)

          【讨论】:

          • 所以,如果你的表现是用你每天生产多少行来衡量的......
          猜你喜欢
          • 2016-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-10
          • 1970-01-01
          • 2017-06-12
          • 2010-10-07
          • 1970-01-01
          相关资源
          最近更新 更多