布尔表达式中操作数的首选顺序是什么?

时间:2010-02-13 06:58:42

标签: boolean conditional-operator

构造布尔表达式有什么好处,如:

if (0 < x) { ... }

而不是

if (x > 0) { ... }

我总是使用第二种方式,总是将变量作为第一个操作数并使用任何布尔运算符有意义,但最近我已经阅读了使用第一种方法的代码,并且在克服了最初的怪异之后我开始比较喜欢它。

现在我已经开始编写所有布尔表达式,只使用<<=,即使这意味着变量不是第一个操作数,如上例所示。对我而言似乎提高了可读性,但这可能只是我:)

其他人对此有何看法?

5 个答案:

答案 0 :(得分:3)

对于你想要比较的任何表达,做任何最自然的事情。

如果您对其他操作感兴趣(例如==),之前的主题会比较这些比较操作数的顺序(以及原因)。

答案 1 :(得分:0)

主要是为了避免在=条件下使用==代替if的问题。为了保持一致性,许多人也将其与其他运营商一样使用。我没有看到任何问题。

答案 2 :(得分:0)

最好使用'读'。我要指出的一件事是,如果我正在测试一个值是否在边界内,我会尝试编写它,因此边界位于“外部”,就像它们可能在数学表达式中一样:

因此,要测试(0

 if ((0 < x) && (x <= 10)) { ... }

而不是

 if ((0 < x) && (10 >= x)) { ... }

 if ((x > 0) && (10 >= x)) { ... }

我发现这种模式使得遵循逻辑更容易。

答案 3 :(得分:0)

将数字放在首位的一个优点是它可以防止在需要==时使用=的错误。

if ( 0 == x ) // ok
if ( 0 = x )  //is a compiler error

与微妙的错误相比:

if ( x = 0 )  // assignment and not comparison. most likely a typo

答案 4 :(得分:0)

说实话,在右侧编写带变量的表达式是不寻常的,并且这种异常可读性的直接后果会受到影响。编码惯例仅凭借惯例具有内在价值;人们习惯于以特定的标准方式编写代码,x >= 0就是一个例子。如果没有正当理由,就应该避免不必要地偏离这些简单的规范。

你必须“克服最初的怪异”的事实应该是一个红旗。

我不会写0 < x,因为我不会在Java中使用匈牙利符号。在罗马做到入乡随俗。罗马人写x >= 0。不,这不是一个大问题,它似乎是一个不必要的小怪癖。