前言
- 所谓重构(refactoring):
在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。 – Martin Fowler - 背景
最近在做需求,需要对方法加权限控制,发现旧方法不再适用,需要重新抽象。积累了一个安全重构小技巧。
步骤
- 期望将 methodB 恢复到 methodA 和 methodC 中,删掉methodB
public static void methodA() {System.out.println("methodA");System.out.println("doSomething before methodB");methodB();System.out.println("doSomething after methodB");}public static void methodC() {System.out.println("methodC");System.out.println("doSomething before methodB");methodB();System.out.println("doSomething after methodB");}public static void methodB() {System.out.println("doSomething while methodB");}public static void main(String[] args) {methodA();methodC();}
- idea 重构 。快捷键:Ctrl + Alt + N
- 好处
消除手工移动因素,重构动作较为安全。
后记
- 《修改代码的艺术》
- 《重构》
以上两本书,主要是在强调如何把代码调整到易读,代码出现坏味道时如何修改。
idea 里面 “Refactor” 中的很多用途都有上述两本书的影子。
如果决定要重构,除了需要有测试用例保证重构安全,还需要多使用工具消除人工移动代码的隐患。