- Duplicated Code (重复代码)
- Long Method (过长函数)
- Large Class (过大的类)
- Long Parameter List(过长参数列)
- Divergent Change ( 发散式变更)---一个类受多种变化的影响。
- Shotgun Surgery ---- 一个变化引发多个类的修改。
- Feature Envy (依恋情结),一个类的方法,大量依赖另一个类的数据。
- Data Clumps (数据泥团) ,类似的数据,存在多个地方,就一个个的泥块,大部分字段很相似。
- Primitive Obsession (基本类型偏执), 数据结构的定义中, 应该使用类的时候,偏执的使用基本类型。 ??
- Switch statement( switch 惊悚现身) switch的问题在于重复,它常散布在代码的多处地方。 书中说简单的可以通过提取一个函数,封装switch, 这个常见的一种办法, 但是提到使用多态的解决?! 用多态以前的确没有想过,提取共同的接口,在子类中实现差异逻辑。
- Parallel Inheritance Hierachies (平行继承)
- Lazy Class (冗余类), 多余的类
- Speculative Generality( 夸夸其谈未来性) 过度考虑扩展,多余的抽象设计,更难理解与维护
- Temporary Field (令人迷惑的临时字段)
- Message Chains (过度耦合的消息链)
- Middle Man(中间人)--- 过度使用委托
- Inappropriate intimacy(狎昵关系) 两个类关联紧密, 逻辑定位不清晰。
- 异曲同工的类
- Incomplete Library Class (不完美的类库) 使用当类库不支持某功能时,使用Static函数,扩散类库的功能。 或者Introduce Local Extension(引入本地扩展) 当类库不支持多某功能时,继承它,子类扩展。
- Data Class (纯稚的数据类)
- Refused Bequest(被拒绝的遗赠) 超类中不希望实现的超类接口, 将接口的实现下移。
- Comments(过多的注释) 没有同步被更新的注释, 引起歧义。
重构---代码的坏味道
最新推荐文章于 2024-08-08 23:32:51 发布