改善丑陋的代码之嵌套if-else判断语句(卫语句)

Aki 发布于 2022-11-09 248 次阅读


改善丑陋的代码——嵌套if-else语句优化(卫语句)_哔哩哔哩_bilibili

设想有一下场景,一个公司需要招聘一个程序员,年龄要求为35岁一下,学历为本科以上,专业是计算机专业,英语四级以上等等条件。

你或许会这样写:

// break 的作用是退出do语句

const string major = "computer science";
const int age = 45;
const int english = 4;
const string qualification = "本科";
bool luqu = false;

bool InterView(const string major, const int age, const int english, const string qualification)
{
    if (age <= 35)
    {
        if (major == "computer science")
        {
            if (english >= 4)
            {
                if (qualification == "本科")
                {
                    luqu = true;
                    return true;
                }
            }
        }
    }
    luqu = false;
    return false;
}

int main()
{
    cout << InterView(major, age, english, qualification) << endl;
  
    return 0;
}

这样的写法是正确的,这是毫无疑问的。但是这样可能看起来很不美观,阅读起来也不太方便。有一种更好的写法如下:


const string major = "computer science";
const int age = 35;
const int english = 4;
const string qualification = "本科";
bool luqu = false;

bool InterView(const string major, const int age, const int english, const string qualification)
{
    do
    {
        if (age > 35)
        {
            break;
        }
        if (major != "computer science")
        {
            break;
        }
        if (english < 4)
        {
            break;
        }
        if (qualification != "本科")
        {
            break;
        }

        luqu = true;
        return true;

    } while (false);

    luqu = false;
    return false;
}

int main()
{
    cout << InterView(major, age, english, qualification) << endl;
    
    return 0;
}

这样的写法就很美观了,所以的 if 条件都是并列的关系,且功能都是相同的,阅读起来也很好。

注意点:

while() 的条件是false,不然就会出现死循环;条件判断时如果不符合条件就记得 break 掉;当所有的条件都满足时要记得改变我们想要改变的结果。