适当使用嵌套的If语句

时间:2016-06-14 05:05:46

标签: javascript standards simplify nested-if

显然,嵌套的if语句是允许的。所以似乎可能适合他们使用。每个人都讨厌他们,我想知道是否有时候嵌套if语句是最好的行动方案。以下是我认为最好使用嵌套语句的示例:

if (A){
    //Code for A
    if (B){
        //Code for B
    } else {
        //Code for !B
    }
    //More A Code
} else {
    //Code for !A
    if (C){
        //Code for C
    } else {
        //Code for !C
        if (D){
            //code for D
        }
    }
}

如果我试图不嵌套此代码,则结果如下:

if (A&&B){
    //Code for A
    //Code for B
    //More A Code
}
if (A&&!B){
    //Code for A
    //Code for !B
    //More A Code
}
if (!A&&C){
    //Code for !A
    //Code for C
}
if (!A&&!C&&D){
    //Code for !A
    //Code for !C
    //Code for D
}
if (!A&&!C&&!D){
    //Code for !A
    //Code for !C
}

这一开始看起来更干净,直到你真正把代码放在那里并且有冗余,这是一场噩梦。

if (A){
    //Code for A
}
if (A&&B){
    //Code for B
}
if (A&&!B){
    //Code for !B
}
if (A){
    //More A Code
}
if(!A){
    //Code for !A
}
if(!A&&C){
    //Code for C
}
if(!A&&!C){
    //Code for !C
}
if(!A&&!C&&D){
    //Code for D
}

这种方式不使用嵌套语句,并且不需要重写代码,但它会过度使用条件并且if()实例比原始实例多。此外,你必须做更多的阅读而不是略读,看看只有在A是真的情况下才会评估B.如果你在底部放置一个if(A&&C)或者其他东西,那就很难维持。

嵌套if语句对我来说似乎是最合理的,因为它们的if()实例最少。我不明白为什么每个人都讨厌嵌套的if语句。有没有人有更实际的方法来编写这段代码?或者我是否误解了人们对嵌套ifs的意义?似乎关于嵌套ifs的每个问题在第一层中都没有代码,例如:

if(A){
    if(B){
        //Do Something
    } else {
        //Do Something Else
    }
} else {
    //Do Third thing
}

等等......不,那个人仍会使用更多的if()实例来尝试缩短它。我想到的particular example有两个相同的陈述。 Anywho,是适当的嵌套if语句的这些例子,还是有更好/更清晰/更清洁/更快/更标准的编写代码的方式?

1 个答案:

答案 0 :(得分:0)

如果不需要,嵌套的if语句会被讨厌。通常有一些方法可以将它们转换为更少的complex代码,有时候并不明显,但仍然可能。如果您的问题是essentially complex,那么嵌套的if语句可以完全编码。