改善丑陋的代码——嵌套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 掉;当所有的条件都满足时要记得改变我们想要改变的结果。
Comments NOTHING