检查三个布尔值的最快,最易读的方法

时间:2014-07-16 20:55:02

标签: java performance readability

what is the fastest algorithm for permutations of three condition?Fastest way to find correct combination with set of 8 booleans

类似

我有三个boolean值(称为abc),每个值根据哪些值为真而具有不同的操作。这里有一个奇怪的情况;如果a为false,则c也必须为false。有六种可能性,这导致了一个相当长而丑陋的if语句链。这就是我想出的:

if (a)
    {
        if (b)
        {
            if (c)
            {
                doAction1(); // a = true, b = true, c = true
            }
            else
            {
                doAction2(); // a = true, b = true, c = false
            }
        }
        else
        {
            if (c)
            {
                doAction3(); // a = true, b = false, c = true
            }
            else
            {
                doAction4(); // a = true, b = false, c = false
            }
        }
    }
    else
    {
        if (b)
        {
            doAction5(); // a = false, b = true, c = false
        }
        else
        {
            doAction6(); // a = true, b = false, c = false
        }
    }

我希望代码是可读且快速的,这意味着我不想使用任何奇怪的按位操作。这不是家庭作业,只是个人项目的简化版本。

2 个答案:

答案 0 :(得分:5)

你总是可以写

if (a && b && c)
{
    action1 ();
}
else if (a && b && ! c)
{
    action2 ();
}
else if (a && ! b && c)
{
    action3 ();
}
else if (a && ! b && ! c)
...

可以说具有较少的嵌套级别和较少的仅仅是噪声的支撑使其更具可读性。而且你不再需要评论了。

答案 1 :(得分:0)

if(a && b && c){
    //a b c true
}
else if(!a && b && !c){
    //a false b true c false
}
else if(a && !b && c{
    //a true b false c true
}
//etc