收集《重构》的武器

  • rename method

问题:
当想把一个函数的名称修改的时候,例如将getResultOfCalculate()函数修改成getResultOfModify()函数,如果调用待修改函数的地方很少,那就直接修改,但是调用的地方很多的时候,本着少量修改及时编译测试的原则,就需要一件重型武器才能帮你解决该问题。
方法:
首先建立一个新函数,命名为
getResultOfModify(),并将原函数getResultOfCalculate()的代码复制过来。然后找到旧函数的所有调用者,将它们全部改为调用新函数,边改便编译测试通过无误,全部修改完后,就可以将旧函数删掉了。
Tips
看似该武器威力不大,但是旧函数调用成百上千的时候,修改过程中出现的编译和测试出现的错误,会使你无奈屡次返工。

  • add parameter

问题:

该武器和瑞士军刀优点相似,都是为了将旧函数重构成新函数。具体情况是当方法某个方法被超类和子类实现了的时候,就需要写一个重载接口实现添加新的参数
方法:
方法跟瑞士军刀的方法一样,新写一个同名接口,添加新的参数,内容是将旧接口的内容复制过来,然后旧接口内部调用新写的接口,将新添加的参数默认值为null,或默认正确的初始值。然后将调用的地方旧接口该为新接口,一边修改一遍编译测试,确保编译测试通过然后进行下一步,如果旧接口是public的,无法安全删除,那就保留旧接口,并注释deprecated(不建议使用,该接口已弃用)

  • remove parameter

该武器的问题和方法和前面两个武器一样。

07-06 22:12