• Inline Method(内联函数)
    • 如果一个函数的方法体与函数名称同样清楚易懂,那么在函数调用点插入函数本体,然后移除该函数:
      • 重构--Inline Method(内联函数),Inline Temp(内联临时变量),Substitute Algorithm(替换算法)(五)
    • 动机
      • 情况一:有些函数,其内部代码和函数名称同样清晰易读。也许是你自己重构了该函数,导致出现这样的结果。那么此时就应该去掉这个函数,直接使用其中的代码。
      • 情况二:如果手上有一群组织不合理的函数。可以将它们都内联到一个大型函数中,再从中提炼出组织合理的小型函数。
      • 使用Inline Method的动机,往往是别人使用了太多间接层,使系统中的所有函数都似乎只是对另一个函数的简单委托,造成开发者被这些委托动作搞乱。
    • 做法
      • 检查函数,确定它不具多态性;
        • 如果子类继承了这个函数,就不要将此函数内联,因为子类无法覆写一个根本不存在的函数;
      • 找出这个函数的所有被调用点;
      • 将这个函数的所有被调用点都替换为函数本体;
      • 编译,测试;
      • 删除该函数的定义;
    • 写在最后
      • 对于递归,多返回点,内联至另一个对象中而该对象并无提供访问函数等等众多的情况,就不应该使用Inline Method.
  • Inline Temp(内联临时变量)
    • 你有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其它重构手法。此时要将所有对该变量的引用动作,替换为对它赋值的那个表达式自身;
      • 重构--Inline Method(内联函数),Inline Temp(内联临时变量),Substitute Algorithm(替换算法)(五)
    • 动机
      • Inline Temp常作为Replace Temp with Query(以查询取代临时变量)的一部分使用。
      • 单独使用Inline Temp的情况是:发现某个临时变量被赋予某个函数调用的返回值。如果这个临时变量妨碍了其它重构手法,如"Extract Method(提炼函数)",就应该将它内联化;
    • 做法
      • 检查给临时变量赋值的语句,确保等号右边的表达式没有副作用;
      • 如果这个临时变量并未被声明为final,那就将它声明为final,然后编译;
        • 这可以检查该临时变量是否真的只被赋值一次;
      • 找到该临时变量的所有引用点,将它们替换为"为临时变量赋值"的表达式;
      • 每次修改后,编译并测试;
      • 修改完所有引用点之后,删除该临时变量的声明和赋值语句;
      • 编译,测试;
  • Substitute Alogorithm(替换算法)
    • 如果想要把某个算法替换为另一个更清晰的算法。只要将函数本体替换为另一个算法就可以了。
      • 重构--Inline Method(内联函数),Inline Temp(内联临时变量),Substitute Algorithm(替换算法)(五)
    • 动机
      • 解决问题的方式很多,算法也是如此。有时我们碰到更加简单的实现方式,就应该尝试使用这种方式;
      • 替换算法之前,要确定自己了解原先的函数。
    • 做法
      • 准备好另一个(替换用)算法,让它通过编译;
      • 针对现有测试,执行上述的新算法。如果结果与原本结果相同,重构结束;
      • 如果测试结果不同于原先,在测试和调试过程中,以旧算法为比较参数标准;

相关文章:

  • 2021-09-13
  • 2021-11-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-17
猜你喜欢
  • 2021-10-19
  • 2021-06-16
  • 2021-08-01
  • 2021-05-17
  • 2021-08-24
  • 2022-12-23
相关资源
相似解决方案