//first
if(num % 2 == 0) {
isEven = true;
}
//second
isEven = (num %2 == 0);
什么是最好的做法,并且是第一种情况的代码异味?这两个代码片段中哪一个更好
//first
if(num % 2 == 0) {
isEven = true;
}
//second
isEven = (num %2 == 0);
什么是最好的做法,并且是第一种情况的代码异味?这两个代码片段中哪一个更好
他们不会做同样的事情 - 如果num
是奇数,则第一次将isEven
与先前的值相关联,第二次将其设置为false
。
我想:
当if
块体是只是设置变量,其值可以表示为一些简单修改if
块的状况,你总是要设置一些价值,我只会使用简单的作业。
同样为return
语句 - 我宁愿有:
return (num % 2 == 0); // Or (num & 1 == 0)
比
if (num % 2 == 0) {
return true;
} else {
return false;
}
,无需了解周围的情况下任何东西,这两个版本实际上在它们的语义不同。
如果num
是偶数,第一个版本将只更改值isEven
。后者版本将总是更新值为isEven
。所以我肯定会喜欢后者,因为它确保isEven
拥有有用的语义价值。
当任务满足时,永不分支。 –
当可读,可维护/分配足够时,永不分支。只是在那里添加,因为人们有时会把“硬规则”变为极端:) – RHSeeger
您可以消除括号 - 'isEven = num%2 == 0;' –