定义
:对数据的修改经常导致出乎意料的结果和难以发现的bug。
影响
:在一处修改数据,却在另一处造成难以发现的破坏,影响可维护性。
重构目标
:应用数据不变性,不可变性是强大的代码防腐剂。
重构方法
:
可变数据的常见特点
:
重构中可能用到的快捷键操作
:
操作 | 快捷键 |
---|---|
封装变量 | Ctrl + Alt + Shift + T -> Encapsulate Fields 鼠标右键 -> refactor -> Encapsulate Fields |
拆分变量(抽提函数) | Ctrl + Alt + M |
用内联移除移除设值函数 | Ctrl + Alt +N |
直接删除 | Alt + Del |
Builder 模式创建不可变对象 | Builder 模式创建不可变对象 鼠标右键 -> refactor -> Replace Constructor as Builder |
定义
:某个模块经常因为不同的原因在不同的方向上发生变化。
影响
:当处于多个不同上下文的外部行为变化时,都会引起同一个类或模块的修改,影响了代码的可读性和可维护性。
重构目标
:分离变化,职责单一,结构更稳定。
重构方法
:
发散式变化的常见特点
:
重构中可能用到的快捷键操作
:
操作 | 快捷键 |
---|---|
抽取方法 | Ctrl + Alt + M |
实例/静态方法搬移 | F6 |
内联 | Ctrl + Alt + N |
实例方法变为静态方法 | Ctrl + Alt + Shift + T -> Make Static 鼠标右键 -> refactor -> Make Static |
静态方法变为实例方法 | Ctrl + Alt + Shift + T -> Convert To Instance Method 鼠标右键 -> refactor -> Convert To Instance Method |
引入参数对象 | Ctrl + Alt + Shift + T -> Introduce Parameter Object 鼠标右键 -> refactor -> Introduce Parameter Object |
提取字段/参数/变量 | Ctrl + Alt + F/P/V |
提炼接口 | Ctrl + Alt + Shift + T -> Extract Interface 鼠标右键 -> refactor -> Extract Interface |
声明:本文仅用于学习交流。