【问题标题】:What's the purpose of adding spacings between operators? [closed]在运算符之间添加间距的目的是什么? [关闭]
【发布时间】:2012-12-12 16:56:15
【问题描述】:

我基本上是自学C/C++编程,所以对良好的编程习惯了解不多。一件事总是让我想知道为什么人们总是喜欢在他们的代码中添加运算符之间的间距,例如:

   if(x > 0) 

而不是

   if(x>0)

有什么特别的原因吗?我们知道编译器只是忽略了这样的间距,我不认为后一个表达式的可读性差。

【问题讨论】:

  • 我发现后者的可读性较差。
  • "...我不认为后一种表达方式的可读性较差。"哦,它当然不那么可读,也很丑陋。此外,我会在 if 和左括号之间添加一个空格。
  • 有利于区分关键字(后跟空格)和函数调用(不跟空格),并且当>等运算符周围有空格时更易于阅读表达式(但不是围绕非常紧密绑定的运算符,例如 .->[])。
  • 人们喜欢的另一件事是if 和带括号的控制表达式之间的空格:if (x > 0)
  • 它的可读性,所以你不必花费太多时间解码垃圾。

标签: c++ c spacing


【解决方案1】:

有时空间是必要的,因为 C/C++ 词法分析器的最大咀嚼原则。考虑 xy 都是指向 int, 表达式的指针

*x/*y

是非法的,因为词法分析器会将/* 视为注释。所以在这种情况下,一个空格是必要的:

*x / *y

(来自“专家 C 编程”一书)

【讨论】:

    【解决方案2】:

    我怀疑总是如你所说的那样发生。一般来说,在处理大型项目时,是否要添加空间是有约定的。

    我会根据具体情况应用空格:

    a+b+c+d
    

    比 IMO 更具可读性

    a + b + c + d
    

    然而

    a+b*c+d
    

    可读性不如

    a + b*c + d
    

    我会说先遵循约定,然后再考虑可读性。一致的代码更漂亮。

    【讨论】:

    • 我想如果你习惯写数学方程式等,你会更喜欢更紧凑的表达方式。
    • @user1748356,通常数学方程有块,就像多项式一样,您可以将它们粘在一起以将它们与其他块分开。在答案中,这显示为两个被乘数和星号作为一组。
    【解决方案3】:

    这只是一种很好的方式。您可以根据需要编写代码,但这是一种“标准”方式。

    还使代码更具可读性。

    两个例子让你明白。

    1) 空间更少

     if(x<0.3&&y>2||!std::rand(x-y)&&!condition){
     std::cout<<++x?0:1<<std::endln;
     }
    

    2) 格式良好:

     if (x < 0.3 && y > 2 || !std::rand(x - y) && !condition) {
        std::cout << ++x ? 0 : 1 << std::endln;
    }
    

    【讨论】:

    • 我什至会更进一步,在 AND 和 OR 运算符周围有 两个 空格。
    【解决方案4】:

    编译器不关心空格。这只是关于可读性。

    有些人喜欢运算符周围的空格,有些人则不喜欢。这是个人喜好问题。

    唯一重要的是,当你在一个团队中工作时,你们都同意遵循统一的风格(不仅仅是在这方面,还有很多其他细节),因为两者的混合是比统一的方式更难阅读,即使它是你最不喜欢的方式。

    【讨论】:

      【解决方案5】:

      我认为主要原因是代码可读性(对我来说,这是一个非常重要的原因)。

      对我来说,更多的空间让代码变得更易读(也更容易理解和修改)

      我的风格是这样的:

      if (x > 0) 
      {
        ....
      }
      

      注意if 和左括号( 之间的空格。

      【讨论】:

        【解决方案6】:

        我同意其他人所说的代码对大多数人来说更具可读性。有些人不会认为它更具可读性,但您必须假设其他人将来会查看代码并且会从更具可读性的样式中受益。

        【讨论】:

          【解决方案7】:

          编码风格通常是由使源代码更易于阅读的愿望驱动的。然而,就哪种风格比另一种更具可读性而言,存在一定程度的主观性。不过,我想大多数人都会同意,在同一个文件中混合使用两种样式是一个糟糕的选择。

          【讨论】:

            【解决方案8】:

            可读性。比较:

            // C++
            
            if (x > 0)
            {
                // some
                // code
            }
            
            # Python
            
            if x > 0:
                # some
                # code
            

            【讨论】:

            • 我不确定您的示例的目的是什么——其中一个应该比另一个更具可读性吗? (它们对我来说似乎都非常易读。)
            • @EdwardLoper 是的,我认为 Python 的可读性更强。有括号和花括号有什么意义?
            猜你喜欢
            • 1970-01-01
            • 2016-12-06
            • 1970-01-01
            • 1970-01-01
            • 2014-08-06
            • 1970-01-01
            • 2014-01-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多