2010-02-13 55 views
1

是否有构建布尔表达式像任何好处:布尔表达式中操作数的首选顺序是什么?

if (0 < x) { ... } 

,而不是

if (x > 0) { ... } 

我一直使用的第二种方式,始终把变量作为第一个操作数和使用任何布尔运算符品牌感觉,但最近我已经阅读了使用第一种方法的代码,在克服了最初的怪异之后,我开始更喜欢它了。

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

其他人对此有何看法?

回答

3

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

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

+1

我同意,但我会说最具可读性。 – 2010-02-13 07:04:05

+0

@sadboy:我发现'x> 0'更具可读性,其他人可能会发现'0 kennytm 2010-02-13 07:28:04

+0

我只是想说,就像你说的那样完全是主观的,所以在任何环境或情况下,如果有东西流动或读取更清晰,就去做吧。 – 2010-02-13 19:06:48

0

这主要是为了避免在if条件下使用=而不是==的问题。为了保持一致性,许多人也使用其他操作符。我没有发现任何问题。

0

最好使用任何“读取”。我要指出的一件事是,如果我正在测试以查看某个值是否在范围内,那么我会尝试写出它,以便界限位于“外部”,就像它们可能在数学表达式中一样:

所以,以测试(0 < X < = 10):的

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

代替

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

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

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

0

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

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

比较微妙的错误:

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

大多数编译器(例如gcc-Wall)应该对'if(x = 0)'发出警告。 – kennytm 2010-02-13 07:11:13

0

说实话,这是不寻常的与右侧的变量写表达式中,如异样可读性的直接后果困扰。编码约定仅凭借约定而具有内在价值;人们习惯于以特定的标准方式编写代码,x >= 0就是一个例子。在没有正当理由的情况下,应避免不必要地偏离这些简单规范。

事实上,你必须“克服最初的怪异”也许应该是一面红旗。

我不会写0 < x就像我不会在Java中使用匈牙利表示法一样。在罗马做到入乡随俗。罗马人写作x >= 0。不,这不是一个大问题,它只是一个不必要的小怪癖。