sha*_*oth 1 c++ language-agnostic
我正在审查一个相当古老的项目并且第二次看到这样的代码(C++ - 就像伪代码):
if( conditionA && conditionB ) {
actionA();
actionB();
} else {
if( conditionA ) {
actionA();
}
if( conditionB ) {
actionB();
}
}
Run Code Online (Sandbox Code Playgroud)
在此代码中conditionA,对两个计算的结果进行评估,结果相同conditionB.所以代码只相当于:
if( conditionA ) {
actionA();
}
if( conditionB ) {
actionB();
}
Run Code Online (Sandbox Code Playgroud)
所以前一种变体只是两次代码相同的效果.如何调用编写代码的方式(我的意思是前一种变体)?
Nik*_*sov 13
这确实是错误的编码实践,但要注意,如果条件A和B评估有任何副作用(var增量等),则两个片段不相等.