您的位置:首页 > 其它

一些软件设计的原则

2014-03-07 15:42 274 查看
转自:陈皓的博客:酷壳 – 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

包之间的依赖结构必须是一个直接的无环图形,也就是说,在依赖结构中不允许出现环(循环依赖)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: