DRY
Don't repeat yourself 的缩写,即“不要重复自己”。或者是Once and only once(OAOO),一次且仅一次。其涵义是“系统中的每一部分,都必须有一个单一的、明确的、权威的代表”。即不能含有任何重复代码。
YAGNI
You aren't gonna need it 的缩写。YAGNI 是极限编程的原则,意味只有真正需要的功能才去开发它。提倡尽快地让软件运行起来。
Rule Of Three
即三次原则。指的是当某个功能出现第三次的时候才进行抽象。
KISS
Keep It Simple, Stupid 的缩写。其含义注重简约,不要加入非必要的复杂性,即“尽可能保持简单”。
与 YAGNI 的区别是,KISS 强调的是简单地做,YAGNI 强调的是非必要不要做。
SRP
The Single Responsibility Principle,单一职责原则。一个类或一个方法的职责应该明确且单一。
该原则与下面的 OCP, LSP, ISP, DIP 合称 SOLID。是面向对象编程,设计模式的基础原则。
OCP
The Open Closed Principle,开放封闭原则。软件实体(类,接口,方法等)应该对扩展开放,对修改关闭。即应该以扩展,继承等方式新增功能,而不是修改接口,修改原有的代码。可以总结为用抽象构建框架,用实现扩展细节。
LSP
The Liskov Substitution Principle,里氏替换原则。所有引用基类的地方必须能透明地使用其子类的对象。该原则是继承的基石。使用基类的地方可以用衍生类替换而不影响功能,即扩展子类不会对基类原有功能造成影响。
ISP
The Interface Segregation Principle,接口分离原则。多个特定职责的接口要比一个通用性的接口更好。当要实现一个复杂的类时,应该实现多个单一职责的接口,而不是把多个功能放到一个接口里。
DIP
The Dependency Inversion Principle,依赖倒置原则。抽象不应该依赖实现,实现应该依赖抽象;高层模块不应该依赖底层模块,这两者都应该依赖抽象。
LOD
Law of Demeter,迪米特原则,也叫最少知道原则。一个类应该对其他类保持最少的了解。该原则意为降低类之间的耦合,减少类间不必要的耦合关系。
CRP
Composite Reuse Principle,合成复用原则。即尽量使用组合而不是继承来达到复用的目的。
GRASP
General Responsibility Assignment Software Patterns,通用职责分配软件模式。一共包括了九种模式,描述了对象设计和职责分配的基本原则,讲述了如何将业务抽象成代码,提供了最基础的指导原则。SOLID 原则是在其之上的进一步描述。
Information Expert
信息专家模式。如果某个类拥有执行某个职责所必要的信息,则将这个职责分配给这个类。
Creator
创造者模式。符合下面某个条件时,都应该由类A来创建类B,这时A是B的创建者:
- A 是 B 的聚合
- A 是 B 的容器
- A 拥有初始化 B 的信息
- A 记录 B 的实例
- A 频繁使用 B
Low coupling
低耦合模式。意为尽可能减少类之间的连接。低耦合降低了因一个类的变化而影响的其他类的范围。以下的情况会造成A,B 之间的耦合:
- A 是 B 的属性
- A 调用 B 的实例方法
- A 的方法包含对 B 的引用
- A 是 B 的子类
High cohesion
高内聚。即功能紧密相关的职责应该放在一个类中实现,并共同完成有限的功能。这样有利于降低类的复杂性,有利于维护。
Controller
控制器。将接收和处理系统时间的职责分配给一个类,用这个类来代表整个系统。
Polymorphism
多态。即为面向对象的三大特征之一。当相关选择或行为随类型改变而改变时,用多态为行为变化的类型分配职责。
Pure Fabrication
纯虚构模式。虚构一个与问题域无关的类,为其分配高内聚的职责或行为,以解耦问题域中的其他对象,达到高内聚,低耦合的目的。
Indirection
间接。将一些职责分配给中间对象,用其连接两个模块,以降低这两个模块的耦合度。
Protected Variations
受保护变化。预计不稳点的变化点,抽象成接口,未来通过接口扩展功能,而不需要修改原有的实现。