重构第九章
1.Decompose Conditional(分解条件式)
你有一个复杂的条件语句,从if、then、else三个段落中分别提炼出独立函数。
Example:
if(date.before(SUMMER_START) || data.after(SUMMER_END)) {
charge = quantity * _winterRate + _winterServiceCharge;
} else {
charge = quantity * _summerRate;
}
End:
if(notSummer(date)) {
charge = winterCharge(quantity);
} else {
charge = summerCharge(quantity);
}
private boolean notSummer() {
return date.before(SUMMER_START) || data.after(SUMMER_END);
}
private double summerCharge(double quantity) {
return quantity * _summerRate;
}
private double winterCharge(double quantity) {
return quantity * _winterRate + _winterServiceCharge;
}
Conclusion:
将分支语句的每一个分支独立称为一个函数,可以突出条件逻辑,更加清楚的表达每个分支的作用,并且突出每个分支的原因,更加清楚的表达自己的意图。
也许上述示例中的表达式比较短小,可能不需要进行重构,也可以轻松读懂函数的意图。不过,使用了Decompose Conditional(分解条件式)重构方法后,我们的提炼出来的函数可能性更加好一些。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
网友评论