如何调用这种编写代码的方式?

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增量等),则两个片段不相等.

  • 无论如何,如果你使用有副作用的条件,无论如何你都有*方式*更大的问题...... (6认同)
  • @sleske - 在条件句中没有副作用是一个崇高的目标,但像'if((n = read(fd,...))<0)...'这样的东西是如此常见,值得警告:) (5认同)

cho*_*hki 6

我会称之为糟糕的代码.虽然我倾向于在项目中找到类似的结构,但没有进行任何代码审查.(或其他松懈的开发实践).