0

我已经开始研究像凝聚力这样的概念和像单一责任原则这样的原则。我对它们之间的区别感到非常困惑。

网络上有很多信息,但我发现很难过滤出正确的比较。

凝聚力和单一职责之间的关系是什么?一个类是否有可能只有一个职责但内聚度低?

4

2 回答 2

1

凝聚力可以​​看作是一种软件质量度量,而 SRP 则更多地是一种主观的软件质量原则。正如实用程序员所描述的那样,当属于一起并相互依赖的事物保持在一起时,就会发生内聚代码。

例如,如果一个类的实例变量或属性都由它的方法和它的方法单独使用,但这些方法也不使用来自其他对象的任何外部数据或方法,则称该类具有高度内聚性。但是,如果该类碰巧正在从文件中读取和写入,则该类可以被视为遵守单一职责原则,因为读取和写入可以被视为两个非常不同的任务。无论如何,您还可以将类的主要任务视为“对文件系统进行 IO 操作”,因此 SRP 在某种程度上可以根据应用的上下文进行解释。

于 2019-02-07T16:05:06.720 回答
0

这些概念在 Wikipedia herehere中以简洁的方式进行了描述。

一项责任仍然是一个抽象的概念。如果职责是构建报告,这是一项任务,但仍然是一个包含多个步骤和数据部分的任务。所以在课堂上存在一些低凝聚力的空间。只是进行计算,如果简单的话,会更加“原子”和高内聚性。

如果您认为 SRP 有一个改变课程的单一理由,我认为这也有帮助。

于 2019-02-07T15:46:12.690 回答