用卫语句取代if嵌套
在代码中存在过多条件语句的时候,建议把多层条件语句改为卫语句或其他方式
1、源代码:
double GetPayAmount()
{
double result;
if (IsDead()) {
result = DeadAmount();
}
else {
if (IsSeparated()) {
result = SeparatedAmount();
} else {
if (IsRetired()) {
result = RetiredPayAmount();
} else {
result = NormalPayAmount();
}
}
}
return result;
}
2、使用卫语句取代嵌套条件式:
double getPayAmount()
{
if (isDead()) {
return deadPayAmount();
}
if (isSeparated()) {
return separatedPayAmount();
}
if (isRetired()) {
return retiredPayAmount();
}
return normalPayAmount();
}
3、总结
函数中的if条件逻辑使人难以看清正常的分支执行路径。使用卫语句表现所有特殊情况。
所谓卫语句,如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。