我工作中的另一名工程师今天问我关于“这个单一职责是什么?”我的回答如下:
“你代码的每个范围,无论是if语句、函数、类还是模块,都应该只有一个改变的原因。”
但是我读到的每一个地方,人们都是在类的上下文中谈论这个。告诉他SRP适用于他代码中的每个范围是否不正确?
我工作中的另一名工程师今天问我关于“这个单一职责是什么?”我的回答如下:
“你代码的每个范围,无论是if语句、函数、类还是模块,都应该只有一个改变的原因。”
但是我读到的每一个地方,人们都是在类的上下文中谈论这个。告诉他SRP适用于他代码中的每个范围是否不正确?
函数应该只做一件事情。他们应该做好这件事。他们只应该这样做。--《代码整洁之道》(第35页)
该书中的这一部分简单地命名为“只做一件事”,但它并不是在讨论SRP。马丁在他的下一本书中进一步明确了这一点。
一个函数应该只做一件事情。我们在重构时使用这个原则......在最低层次。但这不是SOLID原则之一——它不是SRP。--《代码整洁架构》(第62页)
SRP的最佳在线解释是Martin的博客, 在标签wiki中有概述。在博客和他的书中,Martin一直(相当)一致地使用术语模块来描述SRP适用的范围。一个模块只是一个源文件,通常只是一个类文件。
一个模块应该对一个且仅一个角色负责。