重构
从一个具体案例出发讲清 61 个重构手法:先看原来的写法哪里会出问题,再看重构之后的样子和它怎么一小步一小步做出来。Python 和 TypeScript 双语代码,完整案例都带测试。
- 前言
- 第 1 章 什么是重构
- 第 2 章 代码的坏味道
- 第二部分导读:最常用的基本手法
- 提炼函数 / 内联函数
- 提炼变量 / 内联变量
- 改变函数声明
- 变量改名
- 封装变量
- 引入参数对象
- 函数组合成类 / 函数组合成变换
- 拆分阶段
- 第三部分导读:封装
- 封装记录
- 封装集合
- 以对象取代基本类型
- 以查询取代临时变量
- 提炼类 / 内联类
- 隐藏委托关系 / 移除中间人
- 替换算法
- 第四部分导读:搬移特性
- 搬移函数
- 搬移字段
- 搬移语句到函数 / 搬移语句到调用者
- 以函数调用取代内联代码
- 移动语句
- 拆分循环
- 以管道取代循环
- 移除死代码
- 第五部分导读:重新组织数据
- 拆分变量
- 字段改名
- 以查询取代派生变量
- 将引用对象改为值对象 / 将值对象改为引用对象
- 第六部分导读:简化条件逻辑
- 分解条件表达式
- 合并条件表达式
- 以卫语句取代嵌套条件表达式
- 以多态取代条件表达式
- 引入特例
- 引入断言
- 第七部分导读:重构 API
- 将查询函数和修改函数分离
- 函数参数化
- 移除标记参数
- 保持对象完整
- 以查询取代参数 / 以参数取代查询
- 移除设值函数
- 以工厂函数取代构造函数
- 以命令取代函数 / 以函数取代命令
- 第八部分导读:处理继承关系
- 函数上移 / 函数下移
- 以子类取代类型码
- 移除子类
- 提炼超类
- 折叠继承体系
- 以委托取代子类 / 以委托取代超类
- 第 57 章 一次完整的重构
- 第 58 章 什么时候重构、什么时候不
- 第 59 章 让 IDE 和 AI 替你动手
- 第 60 章 从重构到设计模式
- 第九部分 可用资源:想深入时看什么
- 附录 A 坏味道与手法对照表
- 附录 B 61 个手法速查表