SRP
[TOC]
Brief introduction about SRP.
单一职责原则
定义
单一职责原则的英文是 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)
评价一个类的职责是否足够单一,我们并没有一个非常明确的、可以量化的标准。 可以说,这是件非常主观、仁者见仁智者见智的事情。
实际上,在真正的软件开发中,我们也没必要过于未雨绸缪,过度设计。 所以,我们可以先写一个粗粒度的类,满足业务需求。 随着业务的发展,如果粗粒度的类越来越庞大,代码越来越多,这个时候, 我们就可以将这个粗粒度的类,拆分成几个更细粒度的类。这就是所谓的持续重构(后面的章节中我们会讲到)。
注意
如何判断类的职责是否足够单一?
不同的应用场景、不同阶段的需求背景、不同的业务层面,对同一个类的职责是否单一,可能会有不同的判定结果。 实际上,一些侧面的判断指标更具有指导意义和可执行性,比如,出现下面这些情况就有可能说明这类的设计不满足单一职责原则:
-
类中的代码行数、函数或者属性过多;
-
类依赖的其他类过多,或者依赖类的其他类过多;
-
私有方法过多;比较难给类起一个合适的名字;
-
类中大量的方法都是集中操作类中的某几个属性。