如何避免“if”链?

2023-12-03

假设我有这个伪代码:

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>()仅当前一个成功时才应评估(这称为短路评估)
  • executeThisFunctionInAnyCase()无论如何都会被执行
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免“if”链? 的相关文章

随机推荐