转自:陈皓的博客:酷壳 – CoolShell.cn
1.DRY——Don’t Repeat Yourself
很好理解,对重复的代码进行抽象封装。
2.KISS——Keep It Simple, Stupid
把一个事情搞复杂是一件简单的事,但要把一个复杂的事变简单,这是一件复杂的事。
3.Program to an interface, not an implementation
这是设计模式中最根本的哲学,注重接口,而不是实现,依赖接口,而不是实现。
4.CQS——Command-Query Separation
命令-查询分离原则。
查询:当一个方法返回一个值来回应一个问题的时候,它就具有查询的性质;
命令:当一个方法要改变对象的状态的时候,它就具有命令的性质;
在设计接口时,如果可能,应该尽量使接口单一化,保证方法的行为严格的是命令或者是查询,这样查询方法不会改变对象的状态,没有副作用,而会改变对象的状态的方法不可能有返回值。
5.YAGNI——You Ain’t Gonna Need It
这个原则简而言之为——只考虑和设计必须的功能,避免过度设计。只实现目前需要的功能,在以后您需要更多功能时,可以再进行添加。
6.Law of Demeter
迪米特法则,又称“最少知识原则”(Principle of Least Knowledge),其来源于1987年荷兰大学的一个叫做Demeter的项目。Craig Larman把Law of Demeter又称作“不要和陌生人说话”。
对于对象 ‘O’ 中一个方法’M',M应该只能够访问以下对象中的方法:
a. 对象O;
b. 与O直接相关的Component Object;
c. 由方法M创建或者实例化的对象;
d. 作为方法M的参数的对象。
7.面向对象的S.O.L.I.D 原则
Single Responsibility Principle (SRP) – 职责单一原则
Unix/Linux是这一原则的完美体现者。各个程序都独立负责一个单一的事。
Windows是这一原则的反面示例。几乎所有的程序都交织耦合在一起。
Open/Closed Principle (OCP) – 开闭原则
关于开发封闭原则,其核心的思想是:模块是可扩展的,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
Liskov substitution principle (LSP) – 里氏代换原则
软件工程大师Robert C. Martin把里氏代换原则最终简化为一句话:“Subtypes must be substitutable for their base types”。也就是,子类必须能够替换成它们的基类。
Interface Segregation Principle (ISP) – 接口隔离原则
接口隔离原则意思是把功能实现在接口中,而不是类中,使用多个专门的接口比使用单一的总接口要好。
Dependency Inversion Principle (DIP) – 依赖倒置原则
高层模块不应该依赖于低层模块的实现,而是依赖于高层抽象。
8.CCP——Common Closure Principle
共同封闭原则。如果必须修改应用程序里的代码,我们希望所有的修改都发生在一个包里(修改关闭),而不是遍布在很多包里。
9.CRP——Common Reuse Principle
共同重用原则。包的所有类被一起重用。如果你重用了其中的一个类,就重用全部。换个说法是,没有被一起重用的类不应该被组合在一起。
10.Hollywood Principle
好莱坞原则。don’t call us, we’ll call you.
11.High Cohesion & Low/Loose coupling
高内聚, 低耦合。
12.CoC——Convention over Configuration
惯例优于配置原则。简单点说,就是将一些公认的配置方式和信息作为内部缺省的规则来使用。
13.SoC——Separation of Concerns
关注点分离。SoC 是计算机科学中最重要的努力目标之一。这个原则,就是在软件开发中,通过各种手段,将问题的各个关注点分开。如果一个问题能分解为独立且较小的问题,就是相对较易解决的。
14.DbC——Design by Contract
契约式设计。DbC的核心思想是对软件系统中的元素之间相互合作以及“责任”与“义务”的比喻。
15.ADP——Acyclic Dependencies Principle
包之间的依赖结构必须是一个直接的无环图形,也就是说,在依赖结构中不允许出现环(循环依赖)。