4.5 以卫语句取代嵌套条件式

Posted kaizen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.5 以卫语句取代嵌套条件式相关的知识,希望对你有一定的参考价值。

【1】原代码

 1 double GetPayAmount()
 2 {
 3     double result;
 4     if (IsDead())
 5     {
 6         result = DeadAmount();
 7     }
 8     else
 9     {
10         if (IsSeparated())
11         {
12             result = SeparatedAmount();
13         }
14         else
15         {
16             if (IsRetired())
17             {
18                 result = RetiredPayAmount();
19             }
20             else
21             {
22                 result = NormalPayAmount();
23             }
24         }
25     }
26 
27     return result;
28 }

【2】以卫语句取代嵌套条件式

 1 double getPayAmount()
 2 {
 3     if (isDead())
 4     {
 5         return deadPayAmount();
 6     }
 7     if (isSeparated())
 8     {
 9         return separatedPayAmount();
10     }
11     if (isRetired())
12     {
13         return retiredPayAmount();
14     }
15 
16     return normalPayAmount();
17 }

【3】总结

函数中的条件逻辑使人难以看清正常的分支执行路径。使用卫语句表现所有特殊情况。

谓卫语句,如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。

 

Good Good Study, Day  Day Up.

顺序 选择  循环 总结

以上是关于4.5 以卫语句取代嵌套条件式的主要内容,如果未能解决你的问题,请参考以下文章

简化条件表达式之以卫语句取代嵌套条件表达式(Replace Nested Conditional With Guard Clauses)

简化条件表达式

sql语句中where条件的嵌套子查询性能

Simplifying Conditional Expressions(简化条件表达式)

ifelse语句if条件可以为空吗

卫语句