抽象度违规 (Abstractness Violation)
ID: abstractness | 严重程度: 低 (默认)
此检测器使用 Robert C. Martin 的"主序列" (Main Sequence) 指标来评估模块的稳定性 (I) 和抽象度 (A) 之间的关系。目标是确保模块位于"主序列"附近——一条抽象度随稳定性增加而增加的线。
为什么这是一种坏味道
- 痛苦地带 (Zone of Pain):高度稳定(很多东西依赖它们)但非常具体(没有抽象)的模块。由于它们的依赖者,这些模块极难更改,但它们的具体性意味着它们将需要更改。
- 无用地带 (Zone of Uselessness):高度抽象(很多接口/抽象类)但非常不稳定(没有人依赖它们)的模块。这些提供了实际上没有被使用的抽象,增加了不必要的复杂性。
如何修复
- 在痛苦地带:引入抽象(接口、抽象类)来解耦模块的实现与其用户。
- 在无用地带:考虑使模块更具体或删除未使用的抽象以简化代码。
配置
yaml
rules:
abstractness:
severity: medium