我有这样的代码,但我觉得它有点难以阅读:
// code1
if( (expensiveOperation1() && otherOperation() && foo())
|| (expensiveOperation2() && bar() && baz()) {
// do something
}
我将其修改为以下内容,以使其更易于阅读:
// code2
const bool expr1 = expensiveOperation1() && otherOperation() && foo();
const bool expr2 = expensiveOperation2() && bar() && baz();
if(expr1 || expr2){
// one of the conditions met
}
但是我现在应该关注效率吗?
我的意思是,在code1
中,如果第一个联结从句已经被满足,那么它甚至不会去看第二个从句,因为已经清楚该语句为真。
但是在我更易读的例子中,必须计算cond1
和cond2
。或者编译器是否足够聪明,如果expr2没有在其他地方使用,就将我的code2
改成code1
?