假设我有这个伪代码:
bool conditionA = executeStepA();
if (conditionA){
bool conditionB = executeStepB();
if (conditionB){
bool conditionC = executeStepC();
if (conditionC){
...
}
}
}
executeThisFunctionInAnyCase();
函数 executeStepX
当且仅当前一个成功时才应该执行。
在任何情况下,都应该在最后调用 executeThisFunctionInAnyCase
函数。
我是编程新手,很抱歉这个非常基本的问题:有没有办法(例如在 C/C++ 中)避免产生那种“代码金字塔”的长 if
链,以牺牲代码的易读性为代价?
我知道如果我们可以跳过 executeThisFunctionInAnyCase
函数调用,代码可以简化为:
bool conditionA = executeStepA();
if (!conditionA) return;
bool conditionB = executeStepB();
if (!conditionB) return;
bool conditionC = executeStepC();
if (!conditionC) return;
但约束是 executeThisFunctionInAnyCase
函数调用。
break
语句可以以某种方式使用吗?
最佳答案
您可以使用 &&
(逻辑与):
if (executeStepA() && executeStepB() && executeStepC()){
...
}
executeThisFunctionInAnyCase();
这将满足您的两个要求:
-
executeStep<X>()
仅当前一个成功时才应评估(这称为 short circuit evaluation) -
executeThisFunctionInAnyCase()
无论如何都会被执行
关于c++ - 如何避免 "if"链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430504/