0

我经常这样构造我的代码:

public void doSomething() {
    if (!condition1) {
        println("problem 1");
        return;
    }
    if (!condition2) {
        println("problem 2");
        return;
    }
    if (!condition3) {
        println("problem 3");
        return;
    }

    // code to run if
    // everything is OK
}

而不是像这样嵌套:

public void doSomething() {
    if (condition1) {
        if (condition2) {
            if (condition3) {
                // code to run if
                // everything is OK
            }
            else {
                println("problem 3");
            }   
        }
        else {
            println("problem 2");
        }
    }
    else {
        println("problem 1");
    }

}

一个比另一个有什么好处吗?一个比另一个更“正确”吗?谢谢!

4

4 回答 4

1

您应该分析您的代码,查看大多数情况下哪个条件为真。如果每个条件为真的次数存在显着差异,那么一定要使用第一个结构,安排代码以利用特定于域的输入。这可能会为您带来一些显着的性能优势。

于 2013-08-22T19:07:23.213 回答
0

每当我看到多个 if 时,我都会考虑转向switch语句,以提高可读性..并避免多个重复的 ....if 词....

于 2013-07-26T05:16:52.627 回答
0

两种代码结构都很好,但是有多个return语句会在调试时增加另一层复杂性,并且在键入和/或编辑代码时更容易出错。

于 2013-08-22T18:53:21.977 回答
0
if(condition1){

} else if(condition2){

} else if(condition3){

} else {

}

或使用 switch 语句。这里没有显着的性能优势。使用在您的情况下更易读/更适合的一种。我应该补充的另一件事是,在某些情况下,switch 语句比 if..else 更快,您将检查不同的子句,直到它达到一个匹配项或根本没有匹配项。

于 2013-07-26T05:19:09.577 回答