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

コードをプロファイリングして、どの条件がほとんどの場合真であるかを確認する必要があります。各条件が true になる回数に大きな違いがある場合は、必ず最初の構造を使用して、ドメイン固有の入力を利用するようにコードを調整してください。これにより、パフォーマンスが大幅に向上する場合があります。

于 2013-08-22T19:07:23.213 に答える
0

どちらのコード構造でも問題ありませんが、複数のreturnステートメントを使用すると、デバッグ時に別の複雑なレイヤーが追加され、コードの入力や編集時にエラーが発生しやすくなる可能性があります。

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

} else if(condition2){

} else if(condition3){

} else {

}

または switch ステートメントを使用します。ここでは、パフォーマンスに大きなメリットはありません。あなたの状況でより読みやすく/適切なものを使用してください。追加する必要があるもう 1 つのことは、場合によっては、switch ステートメントが if..else のように高速であるということです。一致する 1 つに到達するか、まったく一致しないまで、さまざまな句をチェックします。

于 2013-07-26T05:19:09.577 に答える