(转)重构 - 改善既有代码的设计

2020-12-11  本文已影响0人  PixelEyes

重构 - 改善既有代码的设计

1 重构,第一个示例

2 重构的原则

2.1 何谓重构

2.2 两顶帽子

2.3 为何重构

2.4 何时重构

2.5 重构的挑战

2.6 重构、架构和YAGNI

2.7 重构与软件开发过程

2.8 重构与性能

2.9 重构起源何处

2.10 自动化重构

3 代码的坏味道

4 构筑测试体系

4.1 自测试代码的价值

4.2 测试代码示例

4.3 第一个测试

4.4 再添加一个测试

4.5 修改测试夹具

4.6 探测边界条件

4.7 测试远不止如此

5 介绍重构名录

6 第一组重构

6.1 提炼函数

6.2 内联函数

6.3 提炼变量

6.4 内联变量

6.5 改变函数声明

6.6 封装变量

6.7 变量改名

6.8 引入参数对象

6.9 函数组合成类

6.10 函数组合成变换

6.11 拆分阶段

7 封装

7.1 封装记录

7.2 封装集合

7.3 以对象取代基本类型

7.4 以查询取代临时变量

7.5 提取类

7.6 内联类

7.7 隐藏委托关系

7.8 移除中间人

7.9 替换算法

8 搬移特性

8.1 搬移函数

8.2 搬移字段

8.3 搬移语句到函数

8.4 搬移语句到调用者

8.5 以函数调用取代内联代码

8.6 移动语句

8.7 拆分循环

8.8 以管道取代循环

8.9 移除死代码

9 重新组织数据

9.1 拆分代码

9.2 字段改名

9.3 以查询取代派生变量

9.4 将引用对象改为值对象

9.5 将值对象改为引用对象

10 简化条件逻辑

10.1 分解条件表达式

10.2 合并条件表达式

10.3 卫语句取代嵌套条件表达式

10.4 以多态取代条件表达式

10.5 引入特例

10.6 引入断言

11 重构API

11.1 查询函数和修改函数分离

11.2 函数参数化

11.3 移除标记参数

11.4 保持对象完整性

11.5 以查询取代参数

11.6 以参数取代查询

11.7 移除设置函数

11.8 以工厂函数取代构造函数

11.9 以命令取代函数

11.10 以函数取代命令

12 处理继承关系

继承体系里上下调整:函数上移字段上移构造函数本体上移函数下移字段下移

继承体系添加新类或者删除旧类:移除子类提取超类折叠继承体系

一个字段仅用于类型码使用:以子类取代类型码

如果本来使用集成的场景变得不再适合:以委托取代子类以委托取代超类

12.1 函数上移

12.2 字段上移

移构造函数本体上移

12.3 构造函数本体上移

12.4 函数下移

12.5 字段下移

12.6 以子类取代类型码

12.7 移除子类

12.8 提取超类

12.9 折叠继承体系

12.10 以委托取代子类

12.11 以委托取代超类

转自好友先伟大佬 https://github.com/xianweics/refator-code

上一篇下一篇

猜你喜欢

热点阅读