我在this site中讨论了Eclipse中的代码指标时遇到了这个短语,特别是讨论了"缺乏凝聚力的概念":
凝聚力是OO编程中的一个重要概念。它指示一个类是表示单个抽象还是多个抽象。这个想法是,如果一个类代表一个以上的抽象,它应该被重构为多个类,每个类代表一个抽象。
什么是"单一抽象"在这种背景下?
从Difference between Encapsulation and Abstraction开始,我得到的抽象通常只是向用户显示必要的细节(通过使用接口和抽象类)。 在这里:What is abstraction?,我再次得到抽象是隐藏实现。
您如何将这些想法应用于该文章中使用的单一抽象术语?
答案 0 :(得分:3)
在这个特定的上下文中,在您引用的网站(cohesion)中定义,"单一抽象"意味着一个概念。所以它与Single Responsibility Principle密切相关 - 一个班级应该处理"一件事"。如果一个类涉及多个事物,它通常会有许多不同的方法和变量,它们不一定属于一起,因此它的内聚力很低。
这不是这个词用于此目的的常用用法,根据我的经验,它更可能用于推理层次/抽象层次,就像你链接的其他SO问题一样。它们涉及不同的规则,即Single Layer of Abstraction Principle。