重构手法实战
# 重构手法实战
核心命题:重构 = 不改变外部行为的前提下改善代码结构。每个工程师的日常技能。
# 01. 何时重构
- 添加功能前(让改动更容易)
- 修复 Bug 时(让结构更清晰)
- Code Review 时(发现坏味道)
- 三条原则:事不过三(三次重复就抽取),童子军军规(离开时比来时更干净)
# 02. 常用手法速查
| 手法 | 适用场景 | 示例 |
|---|---|---|
| 提炼函数 | 一段代码可以独立命名 | 大函数中抽出可复用的逻辑块 |
| 内联变量 | 变量只使用一次 | const x = getVal(); return x → return getVal() |
| 移动字段/方法 | 方法用别类的数据更多 | 把方法移到它最常使用的类中 |
| 拆分循环 | 一个循环做多件事 | 拆成多个单一职责的循环 |
| 以管道取代循环 | 集合操作 | for → filter/map/reduce |
| 简化条件表达式 | 复杂 if/else | 提取条件为方法,用多态替代 switch |
# 03. 重构安全网
- 先写测试:重构前确保有测试覆盖
- 小步提交:每次只做一件事,每步可回滚
- IDE 支持:用 IDE 自动重构,不要手动改
# 04. 代码坏味道清单
| 坏味道 | 判断 | 手法 |
|---|---|---|
| 神秘命名 | 变量名不表达意图 | 改名 |
| 过长函数 | > 20 行 | 提炼函数 |
| 过长参数列表 | > 3 个 | 引入参数对象 |
| 霰弹式修改 | 改一个功能要改动多处 | 搬移字段/方法 |
| 数据泥团 | 几个数据总一起出现 | 提炼类 |
| 重复代码 | 同样逻辑出现 2+ 次 | 提炼函数 |
# 05. 一句话总结
重构不是大工程——是每天随手做一件小事。IDE 的重构快捷键 = 程序员最该练成肌肉记忆的操作。
上次更新: 2026/06/28, 17:55:19