第九章 简化条件表达式

第九章 简化条件表达式 Simplifying Conditional Expressions

 

9.1   Decompose Conditional(分解条件式)

症状:你有一个复杂的条件(if-then-else)语句

解决办法:从if-then-else三个段落中分别提炼出独立函数。

 

9.2   Consolidate Conditional Expression(合并条件式)

症状:你有一系列条件测试,都得到相同结果。

解决办法:将这些测试合并为一个条件式,并将这个条件式提炼成为一个独立函数。

double disabilityAmount()

{

if(_seniority < 2) return 0;

if(_monthsDisabled < 2) return 0;

if(_isPartTime< 2) return 0;

}

 

double disabilityAmount()

{

if(isNotEligableForDisability) return 0;

}

 

9.3   Consolidate  Duplicate Conditional Fragments(合并重复的条件片段)

症状:在条件式的每个分支上都有着相同的一段代码

解决办法:将这段重复代码搬移到条件式外。

 

if(A)

{

total = price;

send();

}

else

{

total = price*0.9;

send();

}

 

if(A)

{

total = price;

}

else

{

total = price*0.9;

}

send();

 

9.4   Remove Control Flag(移除控制标记)

症状:在一系列布尔表达式(boolean expressions)中,某个变量带有控制标记(control flag)的作用。

解决办法:以break语句或return语句取代控制标记。控制标记(例如if判断,或者while等等)

 

9.5   Replace Nested Conditional with Grard Clauses(以卫语句取代嵌套条件式)

症状: 函数中的条件逻辑(conditional logic)使人难以看清正常的执行路径。

解决办法:使用卫语句表现所有特殊情况。

将if else if else复杂的嵌套用if if if来代替

 

9.6   Replace Conditional with Polymorphism(以多态取代条件式)

症状:你手上有个条件式,它根据对象型别的不同而选择不同的行为。

解决办法:将这个条件式的每个分支放进一个subclass内的覆写函数中,然后将原始函数声明为抽象函数(abstract method)。

 

9.7   Introduce Null Object(引入Null对象)

症状:你需要再三检查(某物是否为null value)

解决办法:将null value(无效值)替换为null object(无效物)

 

9.8   Introduce Assertion(引入断言)

症状:某一段代码需要对程序状态(state)做出某种假设

解决办法:以assertion(断言)明确表现这种假设。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值