如何摆脱if-else语句混乱

本文关键字:混乱 语句 if-else 何摆脱 | 更新日期: 2023-09-27 17:56:11

if (Functioncall){}     
else if (Functioncall){}
if (Functioncall){}
if (Functioncall){}
if (Functioncall){ 
                 if (Functioncall){                       
                                  if (Functioncall){}
                                  }
                  }
else {}

每个函数调用返回一个布尔值,并根据返回值执行一组语句。我试图摆脱似乎使代码混乱的 if-else 梯子。

我该怎么做?

如何摆脱if-else语句混乱

您可以检查相反的条件并返回"早期"。这样,当您(或其他人)阅读代码时,您将拥有更干净的代码流,更少的缩进,并且可能会有更清晰的逻辑。

看看这些:

  • https://softwareengineering.stackexchange.com/a/118757/33914
  • https://softwareengineering.stackexchange.com/a/18473/33914

在您的情况下,它将类似于:

if (!Functioncall)
    return;
if (!OtherFunctioncall)
    return;

等。

根据代码的编写方式,嵌套if可以编写为一个大if

if(Function1 && Function2 && Function3){
}else{}

如果您的代码是

if (Functioncall){ 
    if (Functioncall){
        if (Functioncall){
            // the code
        }
    }
}

那么上面的代码是相同的。

您有一些选择:

  • 开关大小写子句
  • 使您的代码更好地模块化。分解为方法(也更容易看到重复的代码)
  • 检查对面并立即返回。可能会帮助您解决嵌套的 ifs

看起来您的函数都返回了一个bool。 返回是否true意味着成功,false意味着失败? 如果是这样,那么您应该更改要void的函数,并在它们失败时抛出Exception。 则调用代码不需要检查返回值。