设计原则检查

  本篇文章,简单搬运课上ppt内容,侵删。

SOLID设计原则检查

SRP(Single Responsibility Principle,单一功能原则

  • 每个类或方法都只有一个明确的职责。
  • 类职责:使用多个方法,从多个方法来综合维护对象所管理的数据。
  • 方法职责:从某个特定方面来维护对象的状态(更新、查询)。

OCP(Open Close Principle,开闭原则

  • 无需修改已有实现(close),而是通过扩展来增加新功能(open)。

LSP(Liskov Substitution Principle,里氏替换原则

  • 任何父类出现的地方都可以使用子类来代替,并不会导致使用相应类的程序出现错误。
  • 子类虽然继承了父类的属性和方法,但往往也会增加一些属性和方法,可能破坏父类的相关约束。

ISP(Interface Segregation Principle,接口隔离原则

  • 当一个类实现一个借口类的时候,必须要实现接口类中的所有接口,否则就是抽象类(abstract class),不能实例化出对象。
  • 软件设计经常需要设计接口类,来规范一些行为。避免往一个接口类中放过多的接口。

DIP(Dependency Inversion Principle,依赖反转原则

  • High-level modules should not depend on low-level modules. Both should depend on abstactions.
  • Abstactions should not depend on details. Details should depend on abstractions.

其他设计原则检查

设计模式

  用以解决特定(具有普遍性)问题的一种方案,如对象构造工厂、职责代理等。

体系结构

  软件模块被组织/集成为系统的结构,如MVC,Pipeline。

设计原则

  关于设计的整体要求和约束,通过满足设计原则来获得好的设计质量。

  层次化抽象原则,按照问题域逻辑关系来识别类。

  责任均衡分配原则,避免出现God类和Idiot类。

  局部化原则,类之间不要冗余存储相同的数据,方法之间不能够出现控制耦合。

  完整性原则,一个类需要提供针对相应数据进行处理的完整方法集。完整是个相对概念,一般来说是相对于问题域需求。

  重用原则(共性抽取原则),把不同类之间具有的共性数据或处理抽象成继承关系,避免冗余。

  显示表达原则,显示表达所有想要表达的数据或逻辑,不使用数组存储位置或者常量来隐含表示某个特定状态或数据。

  信任原则,一个方法被调用时,调用者需要检查和确保方法的基本要求能够被满足,获得调用结果后需要按照约定的多种情况分别进行处理。

  懂我原则,所有类、对象、变量、方法等的命名做到“顾名思义”。