0

私は最近、基本的な選択ステートメントに Snippet 1 の代わりに Snippet 2 を使い始めました。これは少し型にはまらないように思えるので、パフォーマンスの違いがあるかどうか、または一方が他方よりも読みやすいように見えるかどうかを知りたいと思いました。

スニペット 1

function foo() {
    if(case1){
        //...
    } else if (case2) {
        //...
    } else if (case3) {
        //...
    } else{
        // catch other cases
    }
}

スニペット 2

function foo() {
    if(case1){
        //...
        return;
    }
    if(case2){
        //...
        return;
    }
    if(case3){
        //...
        return;
    }
    // catch other cases
}
4

5 に答える 5

1

だけで、すべてのIf条件が発生する可能性があることを意味します。それらは 1 つずつチェックされます。チェーンされたif-elseステートメントは、条件の 1 つだけが実際に発生する可能性があることを意味します。条件の 1 つが実行されると、残りのすべてがスキップされると思います。ほとんどの言語はswitchステートメントもサポートしています。これは、一連のステートメントを連鎖させるよりも多少読みやすくなりますif-else-if。間違っている場合は訂正してください。ただし、これはこれまでに使用したすべての言語に当てはまると思います。

編集:この特定のケースでは(以下の他の人が指摘したように-ありがとう)、return各ステートメントのステートメントのために、すべての条件が発生することはありませんif。ただし、より一般的なケースでは、私の説明は依然として有効です。

于 2013-07-02T15:44:13.320 に答える
0

それはあなたのニーズに依存します。原則として、関数への出口点が多いほど、読みにくくなります。とはいえ、多くの場合、

if(somehting)
{
    // one liner;
    return;
}
if(something else)
{
    // 30 lines of something else.
    return;
}
// catchall

それ以外の:

if(something)
{
    // one liner;
    return;
}
else if(something else)
{
    // now nested! 30 lines.
    return;
}

ただし、これらの条件を独自の関数に変えることで、さらに読みやすくすることができる可能性があります。これはいいと思いませんか:

if(something)
{
    doSomething();
}
else if(something else)
{
    doSomethingElse();
}
else
{
    doJustElse();
}

最後の利点は?簡潔で、明確で、クリーンで、明白で、習得が容易です。

于 2013-07-02T15:47:28.067 に答える
-1

ケース 3 を満たす必要がない場合は、スニペット 1 のほうがパフォーマンスが向上しますelse if。ただし、他の がたくさんある場合はelse ifswitch

于 2013-07-02T15:46:59.047 に答える