-4

以下の2つの方法で、どちらの方法を優先する必要があります。if-else個人的には、方法 2 のラダー 1に満足しています。しかし、私の友人は、それらはコーディングの冗長性を引き起こし、if..のような多くの単一のステートメントでそれを達成していたと言いました.. 例:

    if( cond1 && cond2 ){}
    if(cond1 && cond3){}
    if(cond3 && cond2){} etc..

Instead of.,

    if(cond1)
    {
    }
    else
    {
    if(cond3 && cond2)
    {}
    }

//Way 1
    String str = cond1 && !cond2 && !cond3 ? "world" : "hello" ;

(cond1,cond2,cond3 -> aren't simple checks. say they itself contains many || and &&'s )

//Way 2
            String str;
            if (cond1)
            {
                if (cond2)
                {
                    str = "hello";
                }
                else
                {
                    if (cond3)
                    {
                        str = "hello";
                    }
                    else
                    {
                        str = "world";
                    }
                }
            }
4

2 に答える 2

2
String str;
if (cond1 && cond2) {
    str = "hello";
} else if(cond1 && cond3) {
    str = "hello";
} else if(cond1) {
    str = "world";
}

この方法は、両者の中間です。私は最初の方法のファンではありません。しかし、個人的には、この方法は 2 番目の方法よりも少し明確で読みやすいように見え、同じことを行います。

ifこれは、ステートメントのネストを避ける必要があることを示唆しているわけではありません。if複合ステートメントも自由に使用するように提案しているだけです。私の意見では、if elseブロックの内容はネストされたifものやif else. ifブロック内にないブロック内に何もない場合nested if、ステートメントを Compound で書き換えることができますif statements

私の最初の方法に代わるものもあります。

String str;
if(cond1) {
    if(cond2) {
        //do stuff
    } else if(cond3) {
        //do stuff
    } else {
        //do stuff
    }
}

これは一度だけチェックcond1します。ifとして書き換えることができる純粋にネストされたものがまだありcompoundますが、パフォーマンスが心配な場合(cond1特に時間のかかるチェックである場合)、これはcond11回だけチェックされ、最初に質問で提供したものよりも読みやすくなります(私の意見では)。この違いはもっと微妙です。

こんな方法もあります。

bool flag1 = cond1;
bool flag2 = cond2;
bool flag3 = cond3;

String str;
if (flag1 && flag2) {
    str = "hello";
} else if(flag1 && flag3) {
    str = "hello";
} else if(flag1) {
    str = "world";
}

この方法では、bool変数をフラグとして使用することにより、単純で短い複合条件ステートメントを作成できます。flag1 = cond1実際に条件をチェックするために必要なすべての計算を行わなくても、任意の条件を何度でもチェックできます (条件が変更される可能性がある場合はいつでも、再度行う必要がある場合など)。一度チェックして、条件の結果を保存するだけです。

于 2013-10-24T13:34:54.320 に答える