5

次のような関数があります

string Foo(bool A, bool B)
{
    if(A)
    {
        if(B)
        {
            return "W";
        }
        else
        {
            return "X";
        }
    }
    else
    {
        if(B)
        {
            return "Y";
        }
        else
        {
            return "Z";
        }
    }
}

その二重の入れ子は、私には間違っているように感じます。このパターンを実装するより良い方法はありますか?


みんな助けてくれてありがとう。これを変えるのに役立ちました:

if (female)
{
    if (nutered)
    {
        destRow["TargetSex"] = "FS";
    }
    else
    {
        destRow["TargetSex"] = "F";
    }
}
else
{
    if (nutered)
    {
        destRow["TargetSex"] = "MN";
    }
    else
    {
        destRow["TargetSex"] = "M";
    }
}

これに

destRow["TargetSex"] = female ? (nutered ? "FS" : "F")
                              : (nutered ? "MN" : "M");
4

4 に答える 4

0

あなたの 4 つの可能な状態。より短い (必ずしも維持しやすいとは限りませんが) 表現は次のようになります。

if (A && B) {
    return "W";
} else if (A && !B) {
    return "X";
} else if (!A && B) {
    return "Y";
else return "Z";
于 2013-05-02T22:17:16.930 に答える