我基本上是自学C/C++编程,所以对良好的编程习惯了解不多。一件事总是让我想知道为什么人们总是喜欢在他们的代码中添加运算符之间的间距,例如:
if(x > 0)
代替
if(x>0)
有什么特别的原因吗?我们知道编译器只是忽略了这样的间距,我不认为后一个表达式的可读性较差。
有时空间是必要的,因为 C/C++ 词法分析器的最大咀嚼原则。考虑x
和y
都是指向 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