不恰当的亲密关系¶
ID: cs/coupled-types
Kind: problem
Security severity:
Severity: recommendation
Precision: high
Tags:
- maintainability
- modularity
Query suites:
- csharp-security-and-quality.qls
*不恰当的亲密关系*是一种反模式,它描述了一对原本不相关的类之间过于紧密的耦合:每个类都使用了另一个类的大量方法和字段。这使得这两个类都难以维护、更改和理解。不恰当的亲密关系与“特性依恋”反模式相同,但方向相反:每个类都“依恋”于另一个类中定义的某些功能或数据。
建议¶
解决方案可能很简单,只需将一些错位的方法移到它们 rightful 的位置,或者可能需要先将一些纠缠不清的代码片段提取到它们自己的方法中,然后再进行移动。
有时,纠缠不清的部分(字段和方法)表示缺少对象或抽象级别。将它们组合成一个可以在两个类中使用的新类型可能是有意义的。您可能需要引入委托来隐藏一些实现细节。
可能需要将双向关联转换为单向关系,可以通过使用依赖倒置来实现。
现代 IDE 为这类问题提供了重构支持,通常使用“移动方法”、“提取方法”或“提取类”等名称。
参考资料¶
E. Gamma、R. Helm、R. Johnson、J. Vlissides,*设计模式:可复用面向对象软件的要素*。Addison-Wesley Longman Publishing Co., Inc.,波士顿,马萨诸塞州,1995 年。
W. C. Wake,*重构工作簿*,第 95-96 页。Addison-Wesley Professional,2004 年。