【问题标题】:Cohesion vs Single Responsibility [closed]凝聚力与单一职责[关闭]
【发布时间】:2019-06-30 21:26:36
【问题描述】:

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

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

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

【问题讨论】:

  • 借鉴@RicardoCosteira 的答案,您可能会说内聚是句法特征,而 SRP 是语义特征。凝聚力可以​​通过代码质量分析工具来衡量;但 SRP 只能由人工评估。

标签: oop solid-principles single-responsibility-principle software-quality cohesion


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-07-31
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 2012-05-24
      • 2019-11-15
      相关资源
      最近更新 更多