第九章 简化条件表达式
来源:互联网 发布:2016年中国进口数据 编辑:程序博客网 时间:2024/04/28 21:01
第九章 简化条件表达式 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(断言)明确表现这种假设。
- 第九章 简化条件表达式
- 第九章简化条件表达式
- 《重构》读书笔记(九)——第九章 简化条件表达式
- 简化条件表达式
- 简化条件表达式
- 简化条件表达式
- 4、简化条件表达式
- 简化条件表达式
- 简化条件表达式(一)
- 简化条件表达式(二)
- 重构--简化条件表达式
- 重构之简化条件表达式
- 重构系列6.简化条件表达式
- 重构之简化条件表达式
- 重构之简化条件表达式2
- 重构代码-简化条件表达式
- 重构之简化条件表达式
- 简化条件表达式之一 :Decompose Conditional(分解条件式)
- Log4j的使用
- 关于MFC的document/view结构
- 《连线》杂志:Facebook如何战胜谷歌?
- ASP.NET MVC的运行机制--url的全局分析
- 怎样实现Android系统的HAL(硬件适配层)[转]
- 第九章 简化条件表达式
- 高精度运算
- Kruskal算法 (并查集)
- 常见的内存错误
- Eclipse中Bad version number in .class file解决办法
- 第十章 简化函数调用
- 用AS写个MP3播放器-加载条
- 闭关两个星期
- [转]除了Oracle证书DBA们还需要具备的特质