1.Imagine condition if (obj.is_x() || obj.is_y() || obj.is_z())
如果obj.is_x()
返回true,將調用obj.is_y()
和obj.is_z()
嗎?是否優化了條件評估?這段代碼不好?
2.這是一個壞主意(一般)?這段代碼看起來不好嗎?
bool isbn13_prefix_valid (const string& prefix)
{
unsigned num = stoi(prefix);
if (num == 978 || num == 979) return 1; //super common ones
else if ( num >= 0 && num <= 5 || num == 7 || num >= 600 && num <= 649
|| num >= 80 && num <= 94 || num >= 950 && num <= 989
|| num >= 9900 && num <= 9989 || num >= 99900 && num <= 99999)
return 1;
return 0;
}
您應該至少使用這些值的符號常量。那麼你應該考慮將每個條件重構爲一個具有自解釋名稱的單一方法。 –
'if(num == 978 || num == 979)return 1; //超級普通的 else if'擺脫其他,這是多餘的。最後一個條件與'num == 999'相同。 –
容易出錯,難以理解,沒有直觀的意義,太長。 –