多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 坏味道与重构手法速查表 | 坏味道(英文) | 坏味道(中文) | 页码 | 常用重构 | | --- | --- | --- | --- | | Alternative 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 | 以查询取代参数(324),保持对象完整(319),引入参数对象(140),移除标记参数(314),函数组合成类(144) | | Loops | 循环语句 | 79 | 以管道取代循环(231) | | Message Chains | 过长的消息链 | 81 | 隐藏委托关系(189),提炼函数(106),搬移函数(198) | | Middle 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) | | Refused 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),引入特例(289) |