如何理解单一职责原则
Single Responsibility Principle —— A class or module should have a single responsibility
即一个类只负责完成一个职责或者功能。不要设计大而全的类,要设计粒度小、功能单一的类。单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。
如何判断类的职责是否足够单一?
并没有统一的判断方式。因为软件开发中,业务的需求是不断变化的。我们可以先写一个粗粒度的类,满足业务需求。随着业务越来越大,这个类的内容也越来越多。我们就可以去划分子类,进行代码的拆解。持续重构的能力比在开始时过度设计更加重要。 虽然没有固定的衡量方式,但我们依旧有一些指导方式,能在一定程度上帮助我们去判断类是否单一。
- 类中的代码行数、函数或属性过多,目前先衡量 200 行以上的类,超过 10 个(属性 + 方法)的类
- 类依赖的其它类过多,不符合高内聚、低耦合的设计思想时。
- 取类名时,很难用业务名词概括时,比如 Manager、Context
- 类中有大量方法都是集中操作类中的某几个属性。