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

Bit*_*nja 0 java performance readability

类似于三种情况的排列最快的算法是什么?最快的方法找到8套布尔的正确组合


我有三个boolean值(称为a,, bc),每个值都有不同的操作,基于哪些值为真.这里有一个奇怪的情况; 如果a是假,那么c也必须是假的.有六种可能性,这导致了一个相当长而丑陋的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
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

gna*_*729 5

你总是可以写

if (a && b && c)
{
    action1 ();
}
else if (a && b && ! c)
{
    action2 ();
}
else if (a && ! b && c)
{
    action3 ();
}
else if (a && ! b && ! c)
...
Run Code Online (Sandbox Code Playgroud)

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

  • 将此版本的结果字节代码与OP的原始代码进行比较会很有趣. (2认同)