坏味道(英文) | 坏味道(中文) | 释义 | 常用重构手法 |
---|---|---|---|
Alternative Classes with Different Interfaces | 异曲同工的类 | 改变函数声明,搬移函数,提炼超类 | |
Comments | 注释 | 提炼函数,改变函数声明,引入断言 | |
Data Class | 纯数据类 | 拥有一些字段以及访问这些字段的函数,除此之外一无长物 | 封装记录,移除设值函数,搬移函数,提炼函数,拆分阶段 |
Data Clumps | 数据泥团 | 不同类中相同的字段,不同函数签名中相同的参数等 | 提炼类,引入参数对象,保持对象完整 |
Divergent Change | 发散式变化 | 某个模块经常因为不同的原因在不同的方向上发生变化 | 拆分阶段,搬移函数,提炼函数,提炼类 |
Duplicated code | 重复代码 | 多个地方出现相同/相似的代码结构 | 提炼函数,移动语句,函数上移 |
Feature Envy | 依恋情结 | 一个函数跟另一个模块中的函数或者数据交流格外频繁,远胜于在自己所处模块内部的交流 | 搬移函数,提炼函数 |
Global Data | 全局数据 | 封装变量 | |
Insider Trading | 内幕交易 | 模块之间大量交换数据 | 搬移函数,搬移字段,隐藏委托关系,以委托取代子类,以委托取代超类 |
Large Class | 过大的类 | 提炼类,提炼超类,以子类取代类型码 | |
Lazy Element | 冗赘的元素 | 额外的结构(类和函数) | 内联函数,内联类,折叠继承体系 |
Long Function | 过长函数 | 提炼函数,以查询取代临时变量,引入参数对象,保持对象完整,以命令取代函数,分解条件表达式,以多态取代条件表达式,拆分循环 | |
Long Parameter List | 过长参数列 | 以查询取代参数,保持对象完整,引入参数对象,移除标记参数,函数组合成类 | |
Loops | 循环语句 | 以管道取代循环 | |
Message Chains | 过长的消息链 | 隐藏委托关系,提炼函数,搬移函数 | |
Middle Man | 中间人 | 不干实事 | 移除中间人,内联函数,以委托取代超类,以委托取代子类 |
Mutable Data | 可变数据 | 封装变量,拆分变量,移动语句,提炼函数,将查询函数和修改函数分离,移除设值函数,以查询取代派生变量,函数组合成类,函数组合成变换,将引用对象改成值对象 | |
Mysterious Name | 神秘命名 | 阅读者需要去猜测该名称表明的功能和用法 | 改变函数声明,变量改名,字段改名 |
Primitive Obsession | 基本类型偏执 | 以对象取代基本类型,以子类取代类型码,以多态取代条件表达式,提炼类,引入参数对象 | |
Refused Bequest | 被拒绝的遗赠 | 子类拒绝支持超类的接口 | 函数下移,字段下移以委托取代子类,以委托取代超类 |
Repeated Switches | 重复的switch | 以多态取代条件表达式 | |
Shotgun Surgery | 霰弹式修改 | 每遇到某种变化,你都必须在许多不同的类内做出许多小修改 | 搬移函数,搬移字段,函数组合成类,函数组合成变换,拆分阶段,内联函数,内联类 |
Speculative Generality | 夸夸其谈通用性 | 企图以各式各样的钩子和特殊情况来处理一些不知远在何处的事情 | 折叠继承体系,内联函数,内联类,改变函数声明,移除死代码 |
Temporary Field | 临时字段 | 提炼类,搬移函数,引入特例 |
坏味道与重构手法速查表
最新推荐文章于 2023-01-11 09:48:37 发布