本章主要介绍了简化条件逻辑来降低程序的复杂度
1. 分解条件表达式
对于条件逻辑,将每个分支条件分解成新函数还可以带来更多好处:可以突出条件逻辑,更清楚地表明每个分支的作用,并且突出每个分支的原因。
2. 合并条件表达式
检查条件各不相同,最终行为却一致。如果发现这种情况,就应该使用“逻辑或”和“逻辑与”将它们合并为一个条件表达式。从而使这一次检查的用意更清晰。如果我认为这些检查的确彼此独立,的确不应该被视为同一次检查,我就不会使用本项重构。
3. 以卫语句取代嵌套条件表达式
条件表达式通常有两种风格。第一种风格是:两个条件分支都属于正常行为。第二种风格则是:只有一个条件分支是正常行为,另一个分支则是异常的情况。 如果两条分支都是正常行为,就应该使用形如if...else...的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。以卫语句取代嵌套条件表达式的精髓就是:给某一条分支以特别的重视,单独检查该条件,从嵌套条件表达式中独立出来。
4. 以多态取代条件表达式
很多时候都可以将条件逻辑拆分到不同的场景(或者叫高阶用例),从而拆解复杂的条件逻辑。这种拆分有时用条件逻辑本身的结构就足以表达,但使用类和多态能把逻辑的拆分表述得更清晰。可以将每个分支逻辑创建一个类,利用多态来取代条件表达式,去除重复的分值逻辑。
5 . 引入特例
如果我发现代码库中有多处以同样方式应对同一个特殊值,我就会想要把这个处理逻辑收拢到一处。处理这种情况的一个好办法是使用“特例”(SpecialCase)模式:创建一个特例元素,用以表达对这种特例的共用行为的处理。这样我就可以用一个函数调用取代大部分特例检查逻辑。
6. 引用断言
如果你发现代码假设某个条件始终为真,就加入一个断言明确说明这种情况。因为断言应该不会对系统运行造成任何影响,所以“加入断言”永远都应该是行为保持的。
1. 分解条件表达式
对于条件逻辑,将每个分支条件分解成新函数还可以带来更多好处:可以突出条件逻辑,更清楚地表明每个分支的作用,并且突出每个分支的原因。
2. 合并条件表达式
检查条件各不相同,最终行为却一致。如果发现这种情况,就应该使用“逻辑或”和“逻辑与”将它们合并为一个条件表达式。从而使这一次检查的用意更清晰。如果我认为这些检查的确彼此独立,的确不应该被视为同一次检查,我就不会使用本项重构。
3. 以卫语句取代嵌套条件表达式
条件表达式通常有两种风格。第一种风格是:两个条件分支都属于正常行为。第二种风格则是:只有一个条件分支是正常行为,另一个分支则是异常的情况。 如果两条分支都是正常行为,就应该使用形如if...else...的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。以卫语句取代嵌套条件表达式的精髓就是:给某一条分支以特别的重视,单独检查该条件,从嵌套条件表达式中独立出来。
4. 以多态取代条件表达式
很多时候都可以将条件逻辑拆分到不同的场景(或者叫高阶用例),从而拆解复杂的条件逻辑。这种拆分有时用条件逻辑本身的结构就足以表达,但使用类和多态能把逻辑的拆分表述得更清晰。可以将每个分支逻辑创建一个类,利用多态来取代条件表达式,去除重复的分值逻辑。
5 . 引入特例
如果我发现代码库中有多处以同样方式应对同一个特殊值,我就会想要把这个处理逻辑收拢到一处。处理这种情况的一个好办法是使用“特例”(SpecialCase)模式:创建一个特例元素,用以表达对这种特例的共用行为的处理。这样我就可以用一个函数调用取代大部分特例检查逻辑。
6. 引用断言
如果你发现代码假设某个条件始终为真,就加入一个断言明确说明这种情况。因为断言应该不会对系统运行造成任何影响,所以“加入断言”永远都应该是行为保持的。









