<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

设计原则

 
目前较为常见的一些设计原则如下表:
原则

备注

DRY - Don’t Repeat Yourself

拒绝重复

不要写一次以上相同或类似的代码,也称为“Once and Only Once(仅此一次)”原则。

SCP - Speaking Code Principle

会说话的代码原则

代码必须可以传递它的意图。代码中的注释可能意味着代码没有充分传递它的意图。

OCP - Open Closed Principle

开放封闭原则

一个设计单元应该对调整开放。这样的调整不会使得现有的客户端无法工作。继承是一个可以让你达到该目标的机制之一:子类可以在父类的客户端保持正常工作的情况下进行调整。

LSP - Liskov Substitution Principle

里氏替换原则

类的一个实例必须适用于父类的所有实例的应用场合。这不仅仅要求编译器这样转换源码,还应使得在变更后系统仍然可以正常工作。

DIP - Dependency Inversion Principle
依赖倒转原则

高层的概念不应该依赖底层的概念/实现,而依赖底层的概念/实现可以依赖高层的概念,因为高层的概念相对底层的概念更不易变化。可以通过引入新的接口以遵守该原则。

ISP - Interface Segregation Principle

接口隔离原则

接口必须小。他们只能包含若干个方法,而且包含的这些方法必须紧密关联。

REP: Reuse/Release Equivalency

Principle

复用发布等同原则

复用的元素等同于要发布的元素。

CRP: Common Reuse Principle

共同重用原则

包内的所有类总是一起被复用。

CCP: Common Closure Principle

共同闭包原则

一个包中的类必须封闭起来以应对相同类型的变化。如果一个类必须变化,包内的所有类也必须一起变化。

ADP: Acyclic Dependencies Principle

非循环依赖原则

包之间的依赖结构应该是非循环。

SDP: Stable Dependencies Principle

稳定依赖原则

一个包应该依赖于至少和它一样稳定的包。

SAP: Stable Abstractions Principle

稳定抽象原则

 

包越稳定,就可能越抽象。而不稳定的包应该是具体的。

TDA: Tell, Don’t Ask

只说不问原则

 

不要对一个对象进行查询,而是告诉它要做什么。和“迪米特原则”相似,每个对象应该仅和“朋友”交互,比如仅同成员或者输入参数保有的对象。

SOC: Separation Of Concerns

分离关注点

不要再一个类中混合若干个关注点。也被称为“Single Responsibility Principle(单一职责原则)”。

 

From: Refactoring in Large Software Projects Performing Complex Restructurings Successfully,P43