重构手法之Inline Method

1,473 阅读1分钟

我们先来看一个栗子:

  //根据是否及格获取最后加的学分
  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”等处理。 做法:

  1. 确认没有多态,内联后,子类无法重写此方法(这个方法已经不存在于父类中了)。
  2. 找出调用的地点
  3. 替换
  4. 编译,测试
  5. 删除原函数。