在运算符之间添加间距的目的是什么?

What's the purpose of adding spacings between operators?

本文关键字:是什么 运算符 之间 添加      更新时间:2023-10-16

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

   if(x > 0) 

而不是

   if(x>0)

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

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

*x/*y

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

*x / *y

(摘自《专家C编程》一书)

我怀疑这总是像你声称的那样发生。通常,在处理大型项目时,对于是否要添加空间是有约定的。

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

a+b+c+d

更具可读性,IMO,比

a + b + c + d

然而

a+b*c+d

可读性低于

a + b*c + d

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

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

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

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

这简直是礼貌。您可以根据需要编写代码,但这是一种"标准"方式。

还使代码更具可读性。

两个例子让你明白。

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;
}
我认为

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

对我来说,随着空间的增加,代码会打开并变得更加可读(因此更容易理解和修改)

我的风格是这样的:

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

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

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

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

读性。比较:

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