使用条件之外的比较运算符

10 c c++ comparison-operators

例如

int f(int a) {
   ...
   return a > 10;
}
Run Code Online (Sandbox Code Playgroud)

被认为是可以接受的(不合法,我的意思是它是"好的代码"),或者它应该总是在有条件的,像这样

int f(int a) {
   ...
   if (a > 10)
      return 1;
   else
      return 0;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ett 37

这是可以接受的 - 如果你的回报类型是bool.


Gre*_*ill 31

这绝对是可以接受的!实际上,Joel在最新的stackoverflow播客中提到了这一点.他说这是他向Fog Creek开始几乎所有程序员的一件事.

  • 当我发现不是每个人都是第一种方式时,我大吃一惊!第一种方式更具可读性和简洁性,而第二种方式更难理解,因为单个简单的概念需要四行而不是一行. (2认同)

ili*_*rit 13

return a > 10 ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

...更有意义,因为你正在返回一个int,而不是一个bool.


Kev*_*tle 6

第一种情况非常好,远比第二种情况好,恕我直言.作为一个可读性问题,我个人会这样做

   return  (a > 10);
Run Code Online (Sandbox Code Playgroud)

但这是次要的,并不是每个人都会同意的.

  • 只有在调用函数时在括号前加上空格,我才这样做. (2认同)