什么"抽象"意味着"阶级凝聚力"或者"阶级凝聚力"代码指标?

时间:2014-12-07 02:04:50

标签: class oop interface abstraction

我在this site中讨论了Eclipse中的代码指标时遇到了这个短语,特别是讨论了"缺乏凝聚力的概念":

  

凝聚力是OO编程中的一个重要概念。它指示一个类是表示单个抽象还是多个抽象。这个想法是,如果一个类代表一个以上的抽象,它应该被重构为多个类,每个类代表一个抽象。

什么是"单一抽象"在这种背景下?

Difference between Encapsulation and Abstraction开始,我得到的抽象通常只是向用户显示必要的细节(通过使用接口和抽象类)。 在这里:What is abstraction?,我再次得到抽象是隐藏实现。

您如何将这些想法应用于该文章中使用的单一抽象术语?

1 个答案:

答案 0 :(得分:3)

在这个特定的上下文中,在您引用的网站(cohesion)中定义,"单一抽象"意味着一个概念。所以它与Single Responsibility Principle密切相关 - 一个班级应该处理"一件事"。如果一个类涉及多个事物,它通常会有许多不同的方法和变量,它们不一定属于一起,因此它的内聚力很低。

这不是这个词用于此目的的常用用法,根据我的经验,它更可能用于推理层次/抽象层次,就像你链接的其他SO问题一样。它们涉及不同的规则,即Single Layer of Abstraction Principle