不适当的亲密
概述
不适当的亲密是耦合类代码异味的一种,指类之间过度访问彼此的私有细节,存在过多的双向引用,导致高耦合和低内聚。
关键内容
- 特征识别:
- 类之间互相访问私有细节
- 存在大量双向引用
- 子类知道父类的太多内部细节
-
一个类过度了解另一个类的内部实现
-
负面影响:
- 类之间耦合度过高
- 修改一个类会影响另一个类
- 难以单独修改或测试类
- 违反封装性原则
-
降低了代码的灵活性
-
常见表现:
- 类之间有过多的getter/setter暴露内部状态
- 两个类之间存在循环依赖
- 子类直接使用父类的私有字段
-
一个类直接操作另一个类的内部数据结构
-
重构策略:
- Move Method:将方法移到更合适的类
- Move Field:将字段移到更合适的类
- Change Bidirectional to Unidirectional:将双向关系改为单向
- Extract Class:提取共同的职责
-
Hide Delegate:隐藏委托关系
-
设计原则:
- 遵循最少知识原则(Law of Demeter)
- 保持良好的封装性
- 降低类之间的耦合度
来源
- Martin Fowler — 《重构:改善既有代码的设计》
- 代码异味 — 重构指导书
相关
- 代码异味 — 不适当的亲密所属的异味类别
- 重构 — 解决方法
- 封装性 — 面向对象核心概念
- 低耦合 — 设计原则
- Move Method — 重构技巧