6. 简化条件表达式

[b]6.1 Decompose Conditional (分解条件表达式)[/b]
如果有一个复杂的条件(if-else)语句,可以从if,else中分别提炼出独立函数。
[img]http://dl2.iteye.com/upload/attachment/0107/4263/e22c913c-391e-3425-be83-1eb9a562b6ca.png[/img]

程序中,[color=red]复杂的条件逻辑[/color]是最常导致复杂度上升的地点之一。必须编写代码检查不同的条件分支,根据不同的分支做不同的事,然后,很快会得到一个相当长的函数。大型函数自身就会使代码的可读性下降,而条件逻辑则会使代码难阅读。
和任何大块头代码一样,可以将它分解为多个独立函数,根据每个小块代码的用途,为分解而得的新函数命名。

[b]6.2 Consolidate Conditional Expression(合并条件表达式)[/b]
如果有一系列条件测试,都得到相同结果。可以将这些测试合并为一个条件表达式,并将这个条件表达式提炼为一个独立函数。
[img]http://dl2.iteye.com/upload/attachment/0107/4265/a4a8ce99-16b4-3754-9509-204707ade58f.png[/img]

[b]6.3 Remove Control Flag (移除控制标记)[/b]
在一系列布尔表达式中,某个变量带有“控制标记”的作用,就以break语句或return语句取代控制标记。
[img]http://dl2.iteye.com/upload/attachment/0107/4273/fce7c2e6-d811-3938-a155-8dc5edd2a490.png[/img]
这样的控制标记带来的麻烦超过了它所带来的便利。

[b]6.4 Replace Nested Conditional with Guard Clauses (以卫语句取代嵌套条件表达式)[/b]
函数中的条件逻辑使人难以看清正常的执行路径。这时就使用[color=red]卫语句表现所有特殊情况,余下都是正常逻辑。[/color]这一条使用起来很方便。
[img]http://dl2.iteye.com/upload/attachment/0107/4267/6d171d75-cfd1-3db2-b899-580536d32bc8.png[/img]

[b]6.5 Replace Conditonal with Polymorphism(以多态取代条件表达式)[/b]
如果有个条件表达式,它根据对象类型的不同而选择不同的行为。可以将这个条件表达式的每个分支放进一个子类内,然后将原始函数声明为抽象函数。
[img]http://dl2.iteye.com/upload/attachment/0107/4269/9d1bf712-d449-350d-84db-9e76ac21940a.png[/img]

[b]6.6 Introduce Null Object (引入Null对象)[/b]
当需要再三检查某对象是否为null, 可以将null值替换为null对象。从而省去null判断。包括List, map等,都推荐返回空的集合,而不是null。
[img]http://dl2.iteye.com/upload/attachment/0107/4271/e64964c7-704e-31a2-a3b7-d5509c1d5ac2.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值