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'相同。 –
容易出错,难以理解,没有直观的意义,太长。 –