Oop 凝聚力与单一责任
我已经开始学习凝聚力等概念和单一责任原则等原则。我对他们之间的区别感到很困惑 网络上有很多信息,但我发现很难过滤出正确的比较 凝聚力和单一责任之间的关系是什么?Oop 凝聚力与单一责任,oop,solid-principles,single-responsibility-principle,software-quality,cohesion,Oop,Solid Principles,Single Responsibility Principle,Software Quality,Cohesion,我已经开始学习凝聚力等概念和单一责任原则等原则。我对他们之间的区别感到很困惑 网络上有很多信息,但我发现很难过滤出正确的比较 凝聚力和单一责任之间的关系是什么? 一个类是否可能只有一个职责但内聚性低?维基百科和 一个责任仍然是一个抽象的概念。如果职责是构建报告,那么这是一项任务,但仍然是一项包含多个步骤和数据部分的任务。因此,在类中存在一些发生低内聚的空间。如果简单的话,只需进行一次计算,就可以获得更多的原子性和高内聚性 如果您认为SRP只有一个改变类的原因,我认为这也有帮助 内聚性可以看作是一
一个类是否可能只有一个职责但内聚性低?维基百科和 一个责任仍然是一个抽象的概念。如果职责是构建报告,那么这是一项任务,但仍然是一项包含多个步骤和数据部分的任务。因此,在类中存在一些发生低内聚的空间。如果简单的话,只需进行一次计算,就可以获得更多的原子性和高内聚性
如果您认为SRP只有一个改变类的原因,我认为这也有帮助 内聚性可以看作是一种软件质量度量,而SRP更像是一种主观的软件质量原则。正如前面所描述的,当属于一起并相互依赖的事物保持在一起时,就会产生内聚代码
例如,如果一个类的实例变量或属性都由它的方法和它的方法单独使用,但这些方法也不使用任何外部数据或来自其他对象的方法,则该类被称为具有高度内聚性。但是,如果该类恰好是从文件读写的,那么该类可以被视为不遵守单一责任原则,因为读写可以被视为两个非常不同的任务。无论如何,您也可以看到该类的主要任务以及对文件系统的IO操作,因此SRP在某种程度上可以根据应用的上下文进行解释。借鉴@RicardoCosteira的答案,您可能会说内聚是一种语法特性,而SRP是语义特性。内聚性可以通过代码质量分析工具来衡量;但SRP只能由人来评估。