这两个代码片段中哪个更好

时间:2011-10-21 06:09:28

标签: java

//first
if(num % 2 == 0 ) {
  isEven = true;
}


//second
isEven = (num %2 == 0);

最好的做法是什么,第一种情况是代码嗅觉?

2 个答案:

答案 0 :(得分:7)

他们没有做同样的事情 - 如果num是奇数,第一个留下isEven的前一个值,第二个将其设置为false

我会:

  • 尝试在声明点初始化变量,之后不要更改它。
  • 首先使用第二种形式,而不是第一种形式。

if块的主体设置变量时,该值可以表示为某些简单修改{的条件{1}}阻止,总是想要设置一些值,我只想使用简单的赋值。

if语句也是如此 - 我宁愿拥有:

return

大于

return (num % 2 == 0); // Or (num & 1 == 0)

答案 1 :(得分:2)

在不了解周围环境的情况下,这两个版本的语义实际上有所不同。

如果isEven是偶数,则第一个版本只会更改num的值。后一版本将始终更新isEven的值。所以我肯定更喜欢后者,因为它确保isEven拥有有用的语义值。