1

结构化布尔表达式有什么好处,例如:

if (0 < x) { ... }

代替

if (x > 0) { ... }

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

现在我已经开始编写我所有的布尔表达式,只使用<或者<=即使这意味着变量不是第一个操作数,就像上面的例子一样。对我来说,它似乎增加了可读性,但这可能只是我 :)

其他人对此有何看法?

4

5 回答 5

3

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

如果您想知道其他操作(例如==),那么之前的主题会比较这些比较的操作数的顺序(以及原因)。

于 2010-02-13T07:01:44.443 回答
0

这样做主要是为了避免使用=而不是==if条件下的问题。为了保持一致性,许多人也对其他运营商使用相同的方式。我认为这样做没有任何问题。

于 2010-02-13T07:05:24.987 回答
0

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

因此,要测试 (0 < x <= 10):

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

代替

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

或者

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

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

于 2010-02-13T07:05:35.077 回答
0

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

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

与微妙的错误相比:

if ( x = 0 )  // assignment and not comparison. most likely a typo
于 2010-02-13T07:09:18.167 回答
0

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

您必须“克服最初的怪异”这一事实也许应该是一个危险信号。

我不会写0 < x,就像我不会在 Java 中使用匈牙利符号一样。在罗马做到入乡随俗。罗马人写x >= 0。不,这不是什么大不了的事,这似乎是一个不必要的小怪癖。

于 2010-02-13T07:29:58.960 回答