//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;' –