【问题标题】:Basic Code Layout Question基本代码布局问题
【发布时间】:2011-01-23 11:49:40
【问题描述】:

您好,我有一个简单的问题,我问了 3-4 个不同的人,每个人的答案都不一样。

哪种代码布局更好并且使用更多?

只要保持一致就真的重要吗?

在程序员的世界中,哪种做法被视为更好的做法?

例如

一)

for(int i=0;i<8;i++)
{
    for(int p=0;p<8;p++)
    {
        if(array[i][p]->Equals(String))
        {
                    //Do Stuff
        }
    }
}

B)

for(int i=0;i<8;i++){
 for(int p=0;p<8;p++){
  if(array[i][p]->Equals(String)){
                    //Do Stuff
                }
        }
}

谢谢, 蒂姆

【问题讨论】:

标签: visual-c++ programming-languages coding-style curly-braces


【解决方案1】:

存在一些已发布的样式指南——例如,Google 的为 here,它规定了函数:

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

对于方块:

if (condition) {  // no spaces inside parentheses
  ...  // 2 space indent.
} else {  // The else goes on the same line as the closing brace.
  ...
}

其他块的类似示例。

所以,看看一些这样的风格指南,从一些有声望的来源中挑选一个你喜欢的,如果有人反对你的风格,只需说“哦,我从 X 中挑选的”(X 可能是谷歌,geosoft,或任何其他你喜欢的来源(更多的被列出here)。

【讨论】:

  • 我从不习惯 k 和 R 风格的大括号。
  • 我基本上是从 K&R(第 1 版)学习 C,所以这是唯一的风格,而且“上手”很容易(我怀疑类似的情况适用于许多其他谷歌员工——我们都没有 K也不是 R,但我们确实有 Thompson、Presotto、Pike...;-)。
  • +1 我在 C ANSI 中采用了这种编程风格!从那以后我就再也没有改变过自己的风格,也从来没有人反对过,相反,我的同事们很喜欢它,并开始把这种风格变成自己的风格!嘿嘿嘿……
【解决方案2】:

在实践中的几乎所有情况下,都有一个明确的答案:使用您正在使用的代码库中当前使用的样式。如果您要开始一个新项目,请使用当前在由维护您的代码的团队维护的其他项目中使用的样式。

我使用过的代码库主要源于 GCC 和其他 FSF 软件,这意味着我的所有项目都使用了单独一行带有“{”的样式。我可以提出为什么“更好”的理由,但这是主观风格的问题。在项目和团队中保持一致客观地更好。

【讨论】:

    【解决方案3】:

    这完全是主观的。两者都很受欢迎。

    【讨论】:

      【解决方案4】:

      这里没有对错。这取决于您或您的团队/组织的偏好。

      就大括号而言,我目前的团队选择了选项B,但我实际上更喜欢选项A。

      我个人建议多一点间距,尤其是在“for”和“if”之后,并在选项 B 上多缩进一点,以提高可读性。但是,这只是我的偏好。

      【讨论】:

      • 是的,我同意额外的间距。
      【解决方案5】:

      什么,没有中间立场?只有两个例子,每一个都被设计为采取(相对)极端的立场?

      很明显,您遗漏了一大堆中间示例,其中包含许多略有不同的格式规则。

      如果你想不出至少十个以上的变种,你就没有真正投入任何努力。两个变体不足以关注细微差别。

      你可以——如果你愿意——偷懒。一个体面的 IDE 将为您格式化。我使用 Eclipse,它为我设置格式,这就是我使用的,根本没有考虑它。

      您还可以下载和阅读开源代码并实际模拟您在那里找到的样式。这是一种不那么懒惰的方法,您确实必须阅读其他人的代码。

      【讨论】:

        【解决方案6】:

        我不确定是否有可能提出一个比另一个更好的理由,这些理由并不是完全主观的,而且只对一小部分项目有效。

        我喜欢压缩风格,它倾向于使代码更紧凑,因为我喜欢我的函数紧凑且适合屏幕,所以它很有帮助。

        虽然它让其他人发疯,他们不喜欢看到一个块在自己的线上开始和结束。我明白他们的意思。

        通常这没什么大不了的,因为每个开发人员都使用自己的设置,并且我们让源代码控制系统以不可知的格式存储它(实际上并不重要)。

        当然是 YMMV。

        【讨论】:

          【解决方案7】:

          正如一些人已经指出的那样,您应该使用代码库或团队已经在使用的样式。

          但是,如果您正在上大学或从未使用过使用大括号的语言,我建议您将大括号单独放在一行中。我发现新开发人员在将花括号与代码放在同一行时可能会遇到识别丢失花括号的问题。这对于现代 IDE 来说可能没什么大不了的。

          【讨论】:

            【解决方案8】:

            当我年轻的时候,我曾经认为所有这些问题都是见仁见智的、主观的,最好留给个人口味。

            随着年龄的增长,我的视力变得越来越散光。如果不进行手术,散光可以使用眼镜或隐形眼镜矫正——但矫正远非完美。

            散光使阅读变得更加困难,包括阅读代码。

            对于像我这样有散光的人来说,identifiers_with_underscored_spacingIdentifiersWithCamelCaseWordBreaks 更容易阅读。

            同样,对我来说,单独一行上的大括号比与代码共享一行的大括号更容易阅读。

            因此我推荐您提出的第二种样式,因为它更易于访问。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-11-17
              • 2011-02-22
              • 2010-12-18
              • 1970-01-01
              • 2016-09-09
              • 1970-01-01
              • 2015-08-09
              • 1970-01-01
              相关资源
              最近更新 更多