凝聚力与单一责任[已结束]

问题描述 投票:0回答:2

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

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

凝聚力和单一责任之间有什么关系?一个班级只有一个责任但内聚能力低吗?

oop solid-principles single-responsibility-principle software-quality cohesion
2个回答
1
投票

内聚可以看作软件质量度量,而SRP更多是主观的软件质量原则。正如Pragmatic Programmers所描述的那样,当一起存在并依赖于彼此的事物保持在一起时,就会发生衔接代码。

例如,如果类的实例变量或属性仅由其方法及其方法使用,但该方法也不使用任何外部数据或来自其他对象的方法,则该类被认为具有高度的内聚性。但是,如果该类恰好是从文件中读取和写入,那么该类可以被视为不遵守单一责任原则,因为读写可以被视为两个非常不同的任务。无论如何,您还可以将类的主要任务视为“使用文件系统执行IO操作”,因此根据应用的上下文,SRP对解释有些开放。


0
投票

这些概念在维基百科herehere中以简明的方式描述。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.