重构第九章
2.Consolidate Conditional Expression(合并条件式)
你有一系列条件测试,都得到相同的结果。将这些测试合并为一个条件式,并将这个条件式提炼成为一个独立函数。
Example:
double disabilityAmount() {
if(_seniority < 2) return 0;
if(_monthsDisabled > 12) return 0;
if(_isPartTime) return 0;
// compute the disability amount
}
Analyse:
上述示例中,函数中有一系列的条件检查语句,他们完成的都是同样的事情,对于这个代码,我们可以合并为一个条件式,之后使用Extract Method(提炼函数)的方法,提炼出一个易读的函数。
End:
double disabilityAmount() {
if(isNotEligibleForDisability()) return 0
// compute the disability amount
...
}
boolean isNotEligibleForDisability() {
return ((_seniority < 2) || (_monthsDisabled > 12) || (_isPartTime));
}
Conclusion:
Consolidate Conditional Expression(合并条件式)将所有做同一件事情的条件语句合并到一起,保证原先逻辑不会变动的基础上,对于厘清代码的真实意义有很大的作用。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
网友评论