1. 过大的类
定义
:类想做事情太多,包含过多的字段,方法,代码行。
影响
:代码重复、混乱,实例过多,进而导致其他代码坏味道。
重构目标
:分解类,保证类的职责单一。
重构方法
:
- 提取类
- 抽取子类
- 抽取接口/超类
常见特点
:
- 类包含太多的字段、方法
- 类职责不单一
- 很多属性和方法只在特殊场景中使用
重构中可能用到的快捷键操作
:
操作 | 快捷键 |
---|---|
引入参数对象 | Ctrl + Alt + Shift + T -> Introduce Parameter Object 鼠标右键 -> refactor -> Introduce Parameter Object |
抽取方法引入参数对象 | Ctrl + Alt + MCtrl + Alt + Shift + T -> Introduce Parameter Object 鼠标右键 -> refactor -> Introduce Parameter Object |
提取字段 | Ctrl + Alt + F |
提炼接口 | Ctrl + Alt + Shift + T -> Extract Interface 鼠标右键 -> refactor -> Extract Interface |
工厂方法代替构造方法 | Replace Constructor With Factory Method |
上移成员方法、变量 | Pull Member Up |
下移成员方法、变量 | Push Member Down |
提取超类 | Ctrl + Alt + Shift + T -> Extract Superclass 鼠标右键 -> refactor -> Extract Superclass |
2. 异曲同工的类
定义
:两个类功能一致,却有不同的定义(方法/接口)。
影响
:相关的业务逻辑可能会重复实现,或分布到不同类中,代码难维护;某个逻辑的修改需要修改多处,容易滋生重复代码、霰弹式修改。
重构目标
:统一接口、相同的功能只实现一份。
重构方法
:
- 函数改名
- 上移函数
- 添加参数
- 函数参数化
- 提炼超类
- 移除子类
常见特点
:
- 类名、函数名类似
- 大部分逻辑一样
- 存在少量差异
重构中可能用到的快捷键操作
:
操作 | 快捷键 |
---|---|
改函数名 | Shift + F6 |
改函数签名 | Ctrl + F6 |
搬移函数 | F6 |
提取超类 | Ctrl + Alt + Shift + T -> Extract Superclass 鼠标右键 -> refactor -> Extract Superclass |
上移、下移函数 | Pull Member Up/Push Member Down |
内联函数 | Ctrl + Alt + N |
删除函数 | Alt + Del |
声明:本文仅用于学习交流。