我们先来看一个栗子:
//根据是否及格获取最后加的学分
int getLastRating(int rate) {
return (isQualified(rate)) ? 2 : 1;
}
//根据考试成绩判断是否及格
boolean isQualified(int rate) {
return rate >= 60;
}
优化之后:
//根据是否及格获取最后加的学分
int getLastRating(int rate) {
return (rate >= 60) ? 2 : 1;
}
其实直接的将isQualified()函数引入并没有增加代码的阅读难度,这其实是一个没有必要的间接层。
在我们重构代码的时候,如果提炼出来的间接层,与原函数对比,并没有提升代码的清晰度,其实就应该去掉这个间接层。
使用Inline Method可以帮我们去掉很多没有必要的间接层。
还有一种用法就是
在处理不合理的函数群的,将他们全部内联到一个大的函数中,在进行“Replace Method with Method Object”等处理。
做法:
- 确认没有多态,内联后,子类无法重写此方法(这个方法已经不存在于父类中了)。
- 找出调用的地点
- 替换
- 编译,测试
- 删除原函数。