坏代码与重构手法速查表
坏味道(英文) | 坏味道(中文) | 页码 | 常用重构 |
---|---|---|---|
Alermative Classes with Different Interfaces | 异曲同工的类 | 83 | 改变函数声明(124) 搬移函数(198) 提炼函数(375) |
Comments | 注释 | 84 | 提炼函数(106) 改变函数声明(124) 引入断言(302) |
Data Class | 纯数据类 | 83 | 封装记录(162) 移除设值韩素(331) 搬移函数(198) 提炼函数(106) 拆分阶段(154) |
Data Clumps | 数据泥团 | 78 | 提炼类(182) 引入参数对象(140) 保持对象完整(319) |
Divergent Change | 发散式变化 | 76 | 拆分阶段(154) 搬移函数(198) 提炼函数(106) 提炼类(182) |
Duplicated Code | 重复代码 | 72 | 提炼函数(106) 移动语句(223) 函数上移(350) |
Feature Envy | 依恋情结 | 77 | 搬移函数(198) 提炼函数(106) |
Global Data | 全局数据 | 74 | 封装变量(132) |
Insider Trading | 内幕交易 | 82 | 搬移函数(198) 搬移字段(207) 隐藏委托关系(189) 以委托取代子类(381) 以委托取代超类(399) |
Large Class | 过大的类 | 82 | 提取类(182) 提炼超类(375) 以子类取代类型码(362) |
Lazy Element | 冗赘的元素 | 80 | 内联函数(115) 内联类(186) 折叠继承体系(380) |
Long Function | 过长函数 | 73 | 提炼函数(106) 以查询取代临时变量(178) 引入参数对象(140) 保持对象完整(319) 以命令取代函数(337) 分解条件表达式(260) 以多态取代条件表达式(272) 拆分循环(227) |
Long Parameter List | 过长参数列 | 74 | 以查询取代临时变量(178) 保持对象完整(319) 引入参数对象(140) 移除标记参数(314) 函数组合成类(144) |
Loops | 循环语句 | 79 | 以管道取代循环(231) |
Message Chains | 过长的消息链 | 81 | 隐藏委托关系(189) 提炼函数(106) 搬移函数(198) |
Middie Man | 中间人 | 81 | 移除中间人(192) 内联函数(115) 以委托取代超类(399) 以委托取代子类(381) |
Mutable Data | 可变数据 | 75 | 封装变量(132) 拆分变量(240) 移动语句(223) 提炼函数(106) 将查询函数和修改函数分离(306) 移除设值函数(331) 以查询取代派生变量(248) 函数组合成类(144) 函数组合成变换(149) 将引用对象改为值对象(252) |
Mysterious Name | 神秘命名 | 72 | 改变函数声明(124) 函数改名(137) 字段改名(244) |
Primitive Obsession | 基本类型偏执 | 78 | 以对象取代基本类型(174) 以子类取代类型码(362) 以多态取代条件表达式(272) 提炼类(182) 引入参数对象(140) |
Refunsed Bequest | 被拒绝的遗赠 | 83 | 函数下移(359) 字段下移(361) 以委托取代子类(381) 以委托取代超类(399) |
Repeated Switches | 重复的switch | 79 | 以多态取代条件表达式(272) |
Shotgun Surgery | 霰弹式修改 | 76 | 搬移函数(198) 搬移字段(207) 函数组合成类(144) 函数组合成变换(149) 拆分阶段(154) 函数内联(115) 内联类(186) |
Speculative Generality | 夸夸其谈通用性 | 80 | 折叠继承体系(380) 函数内联(115) 内联类(186) 改变函数声明(124) 移除死代码(237) |
Temporary Field | 临时字段 | 80 | 提炼类(182) 搬移函数198 引入特例(192) |