重构手法列表——简化条件表达式

分解条件表达式(Decompose Conditional)

现象:有一个复杂的条件语句
动机:有复杂的条件表达式会使代码可读性下降
做法:从if then else三个段落中分别提炼出独立函数

合并条件表达式(Consolidate Conditional Expression)

现象:一系列条件测试都得到相同的结果
动机:合并代码后使逻辑更加清晰
做法:将这些测试合并为一个条件表达式,并将这个条件表达式提炼成一个独立函数

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

现象:在条件表达式的每个分支上有着相同的一段代码
动机:移出去后,代码能更清楚的表明哪些东西是随条件变化而变化,哪些东西保持不变
做法:将这段重复的代码搬移到条件表达式之外

移除控制标记(Remove Control Flag)

现象:在一系列控制表达式中,某个变量带有“控制标记”的作用
动机:控制标记会降低代码可读性
做法:以break语句或者return语句取代控制标记

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

现象:函数中的条件逻辑使人难易看清正常的执行路径
动机:去掉复杂的ifelse嵌套
做法:使用卫语句表现所有特殊情况。卫语句就是用独立的if来取代复杂的if else嵌套

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

现象:一个条件表达式是根据对象类型的不同选择不同的行为
动机:使用多态,如果需要修改则只需建立或修改原来的子类。便于修改
做法:将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始函数声明为抽象函数

引入Null对象(Introduce Null Object)

现象:需要再三检查某对象是否为null
动机:去掉检查null值的重复代码
做法:将null值替换为null对象

引入断言(Introduce Assertion)

现象:某一段代码需要对程序状态做出某种假设
动机:使用断言能够更加清晰的表现出这种假设
做法:以断言明确表现这种假设

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值