我开始研究像Cohesion这样的概念和单一责任原则等原则。我对它们之间的区别感到非常困惑。
网络有很多信息,但我发现很难过滤出正确的比较。
凝聚力和单一责任之间有什么关系?一个班级只有一个责任但内聚能力低吗?
内聚可以看作软件质量度量,而SRP更多是主观的软件质量原则。正如Pragmatic Programmers所描述的那样,当一起存在并依赖于彼此的事物保持在一起时,就会发生衔接代码。
例如,如果类的实例变量或属性仅由其方法及其方法使用,但该方法也不使用任何外部数据或来自其他对象的方法,则该类被认为具有高度的内聚性。但是,如果该类恰好是从文件中读取和写入,那么该类可以被视为不遵守单一责任原则,因为读写可以被视为两个非常不同的任务。无论如何,您还可以将类的主要任务视为“使用文件系统执行IO操作”,因此根据应用的上下文,SRP对解释有些开放。