循环依赖集群
ID: cycle_clusters | Severity: Critical (default)
循环依赖集群是一组相互关联的循环依赖,形成了一个复杂的依赖网。与简单的循环(A -> B -> A)不同,集群涉及多个重叠的循环(例如,A -> B -> C -> A 和 B -> D -> C -> B)。
为什么这是一个坏味道
- 架构腐化:集群通常表明多个组件之间缺乏清晰的边界。
- 极端耦合:整个集群必须作为一个单一的单体单元来对待。
- 无法隔离:几乎不可能在不影响集群中所有其他模块的情况下更改或测试其中一个模块。
- 维护噩梦:集群任何部分的更改都可能对所有相关模块产生不可预测的影响。
示例
坏的
"core" 目录中的一组模块,几乎每个模块都从同一目录导入其他几个模块,创建了多个重叠的循环。
好的
模块应该按层次结构组织,或者具有清晰的基于接口的解耦,以确保循环不会形成集群。
配置
yaml
rules:
cycle_clusters:
severity: high
max_cluster_size: 5如何修复
- 打破核心:识别参与多个循环的 "核心" 模块,并首先对其进行解耦。
- 分层:强制执行严格的分层规则,以防止水平或向上的依赖。
- 重构单体:集群通常表明单个大模块的拆分方式不正确。考虑合并或沿不同边界重新拆分。