本文整理《重构——改善既有代码的设计》中简化条件表达式相关的重构手法,共八种。
-
decompose conditional(分解条件表达式):当你面对一个复杂的 if-then-else 语句时,将 if、then、else 各部分分别提炼为独立的函数,使条件判断的意图更清晰。
- consolidate conditional expression(合并条件表达式):如果有一系列条件测试,结果都相同,则将这些测试合并为一个条件表达式,并将该表达式提炼为一个独立的函数。
- consolidate duplicate conditional fragments(合并重复的条件片段):若条件表达式的每个分支都包含相同的一段代码,将这段重复代码搬移到条件表达式之外。
-
remove control flag(移除控制标记):在一系列布尔表达式中,若某个变量充当控制标记的角色,以 break 或 return 语句代替该控制标记。
-
replace nested conditional with guard clauses(用卫语句取代嵌套条件表达式):当函数中的条件逻辑使人难以看清正常执行路径时,使用卫语句(guard clauses)来表现所有特殊情况,让主路径一目了然。
- replace conditional with polymorphism(用多态取代条件表达式):当你有一个条件表达式,根据对象类型的不同选择不同的行为时,将该条件表达式的每个分支放进对应子类中的重写函数里,然后将原始函数声明为抽象函数。
- introduce null object(引入 null 对象):若代码中需要反复检查某对象是否为 null,则将 null 值替换为一个 null 对象,让调用方无需再做空值判断。
- introduce assertion(引入断言):当某段代码需要对程序状态做出某种假设时,用断言(assertion)明确地表达这种假设,使隐性前提变为显性约束。