构造布尔表达式有什么好处,如:
if (0 < x) { ... }
而不是
if (x > 0) { ... }
我总是使用第二种方式,总是将变量作为第一个操作数并使用任何布尔运算符有意义,但最近我已经阅读了使用第一种方法的代码,并且在克服了最初的怪异之后我开始比较喜欢它。
现在我已经开始编写所有布尔表达式,只使用<
或<=
,即使这意味着变量不是第一个操作数,如上例所示。对我而言似乎提高了可读性,但这可能只是我:)
其他人对此有何看法?
答案 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
。不,这不是一个大问题,它似乎是一个不必要的小怪癖。