Skip to content

Latest commit

 

History

History
43 lines (24 loc) · 1.97 KB

003_SRP.md

File metadata and controls

43 lines (24 loc) · 1.97 KB

单一职责原则

定义

单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。这个原则的英文描述是这样的:A class or module should have a single responsibility。如果我们把它翻译成中文,那就是:一个类或者模块只负责完成一个职责(或者功能)。

实际应用

设计你的系统,使得每个模块负责(响应)只满足一个业务功能需求。

Design your systems such that each module is responsible (responds to) the needs of just that one business function. (Robert C. Martin)

评价一个类的职责是否足够单一,我们并没有一个非常明确的、可以量化的标准。 可以说,这是件非常主观、仁者见仁智者见智的事情。

实际上,在真正的软件开发中,我们也没必要过于未雨绸缪,过度设计。 所以,我们可以**先写一个粗粒度的类,满足业务需求。

随着业务的发展,如果粗粒度的类越来越庞大,代码越来越多,这个时候, 我们就可以将这个粗粒度的类,拆分成几个更细粒度的类。这就是所谓的持续重构(后面的章节中我们会讲到)**。

注意

如何判断类的职责是否足够单一?

不同的应用场景、不同阶段的需求背景、不同的业务层面,对同一个类的职责是否单一,可能会有不同的判定结果。 实际上,一些侧面的判断指标更具有指导意义和可执行性,比如,出现下面这些情况就有可能说明这类的设计不满足单一职责原则:

  • 类中的代码行数、函数或者属性过多;

  • 类依赖的其他类过多,或者依赖类的其他类过多;

  • 私有方法过多;比较难给类起一个合适的名字;

  • 类中大量的方法都是集中操作类中的某几个属性。

参考

uncle bob

geekbang