Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

1年前关闭。



Improve this question




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

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

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

最佳答案

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



本书的该部分简称为“Do One Thing”,但它并不是在谈论SRP。马丁在他的下一本书中更清楚地说明了这一点。



关于SRP的最佳在线说明是Martin的blog,该信息在tag wiki中进行了总结。在博客及其著作中,Martin(相当)一致地使用术语模块来描述SRP的适用范围。模块只是一个源文件,通常只是一个类文件。

10-07 18:24