设计原则SOLID一:单一职责原则

单一职责原则(SRP:Single Responsibility Principle)

A class or module should have a single reponsibility(一个类或者模块只负责完成一个职责(或者功能))
如何理解单一职责原则(SRP)
一个类只负责完成一个职责或者功能。不要设计大而全的类,要设计粒度小、功能单一的类。
单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。

如何判断类的职责是否足够单一?
评价一个类的职责是否足够单一,并没有一个非常明确的、可以量化的标准,不同的应用场景、不同阶段的需求背景、不同的业务层面,对同一个类的职责是否单一,可能会有不同的判定结果。可以说,这是件非常主观、仁者见仁智者见智的事情。
实际上,在真正的软件开发中,我们也没必要过于未雨绸缪,过度设计。
所以,我们可以先写一个粗粒度的类,满足业务需求。随着业务的发展,如果粗粒度的类越来越庞大,代码越来越多,这个时候,我们就可以将这个粗粒度的类,拆分成几个更细粒度的类。
这就是所谓的持续重构。
判定一个类的职责是否够单一的小技巧:

  • 类中的代码行数、函数或属性过多,会影响代码的可读性和可维护性,我们就需要考虑对类进行拆分;
  • 类依赖的其他类过多,或者依赖类的其他类过多,不符合高内聚、低耦合的设计思想,我们就需要考虑对类进行拆分;
  • 私有方法过多,我们就要考虑能否将私有方法独立到新的类中,设置为 public 方法,供更多的类使用,从而提高代码的复用性;
  • 比较难给类起一个合适名字,很难用一个业务名词概括,或者只能用一些笼统的 Manager、Context 之类的词语来命名,这就说明类的职责定义得可能不够清晰;
  • 类中大量的方法都是集中操作类中的某几个属性,比如,在 UserInfo 例子中,如果一半的方法都是在操作 address 信息,那就可以考虑将这几个属性和对应的方法拆分出来。

类的职责是否设计得越单一越好?
单一职责原则通过避免设计大而全的类,避免将不相关的功能耦合在一起,来提高类的内聚性。
同时,类职责单一,类依赖的和被依赖的其他类也会变少,减少了代码的耦合性,以此来实现代码的高内聚、低耦合。
但是,如果拆分得过细,实际上会适得其反,反倒会降低内聚性,也会影响代码的可维护性。

猜你喜欢

转载自www.cnblogs.com/Utah-Lee/p/12391730.html