单一责任原则的范围是什么?

时间:2019-07-04 20:25:10

标签: oop solid-principles single-responsibility-principle

我工作中的另一位工程师今天问我“这是什么责任?”我的回答如下:

“代码的每个范围,无论是if语句,函数,类还是模块,都应有更改的理由”。

但是,在我读到的所有这篇文章中,人们都是在课堂上谈论的。我告诉他SRP适用于他代码中的每个范围,我错了吗?

1 个答案:

答案 0 :(得分:1)

鲍勃·马丁(Bob Martin)试图多次清除此问题。问题在于这里有两种不同的原则在起作用;而且非常不幸的是,其中一个没有真正的名字,这就是为什么它通常与SRP混淆的原因。

  

函数应该做一件事。他们应该做好。他们只能这样做。 -清洁代码(第35页)

本书的这一部分仅以“做一件事情”为标题,但不是在谈论SRP。马丁在他的下一本书中更清楚地说明了这一点。

  

功能应该只做一件事情。我们在最低级别重构时使用该原理。但这不是SOLID原则之一,也不是SRP。 -Clean Architecture(第62页)

关于SRP的最好的在线解释是马丁的blog,其摘要在tag wiki中。在博客及其著作中,Martin(相当)一致地使用术语 module 来描述SRP的适用范围。模块只是一个源文件,通常只是一个类文件。

  

一个模块应该对一个演员负责,而只能对一个演员负责。