[摘自DbC原则与实践]Design by Contract的六大原则和六大准则

简介:

1. Design by Contract
的六大原则 :
原则1 区分命令和查询。查询返回一个结果,但不改变对象的可见性质。命令改变对象的状态,但不返回结果。
原则2 将基本查询同派生查询区分开。派生查询可以用基本查询来定义。
原则3 针对每个派生查询,设定一个后验条件,使用一个或多个基本查询的结果来定义它。这样一来,只要我们知道基本查询的值,也就能知道派生查询的值。
原则4 对于每个命令都撰写一个后验条件,以规定每个基本查询的值。结合“用基本查询定义派生查询”的原则(原则3),我们现在已经能够知道每个命令的全部可视效果。
原则5 对于没个查询和命令,采用一个合适的先验条件。先验条件限定了客户调用查询和命令的时机。
原则6 撰写不变式来定义对象的恒定特性。类是某种抽象的体现,应当将注意力集中在最重要的属性上,以建立关于类抽象的正确概念模型。
 
2. Design by Contract 的六大准则 :
准则1 在适当的地方添加物理限制。尤其是那些需要限制变量不应该为void的地方。
准则2 先验条件中尽可能使用高效的查询。如果有必要,可以增加高效的派生查询,并在其后验条件中确保其与较低效的基本查询之间的等价关系。
准则3 用不变式限定属性。如果一个派生查询被实现为一个属性,则应通过类中不变式的断言保证它与其他查询保持一致。在一个类的开发过程中,通常应该先把断言检测的级别设为最高级,使先验条件、后验条件和不变式都得到检测;一旦通过了检测和测试,一般就可以降低断言检测的级别,只检测先验条件,以提过代码的运行效率。
准则4 为了支持特性的重定义,用相应的先验条件确保每个后验条件。这样就允许在子类开发过程中进行各种不可预见的重定义。
准则5 将预期发生的变化和框定规则这两种不同的限制分别放置在不同的类中。这使开发者在扩展已有类时享有更多的自由。
准则6 若有保密性要求,则违背保密性的查询只能被设为私有熟悉在契约中使用。这里的“设为私有”,是对“在契约中使用了该查询的类”之下的层次而言,至于类之上的层次,这个查询当然是可以使用的。

 

本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2006/12/18/601303.html,如需转载请自行联系原作者

相关文章
|
6月前
|
Java
六大设计原则-里式替换原则【Liskov Substitution Principle】
六大设计原则-里式替换原则【Liskov Substitution Principle】
21 0
面向对象七大设计原则,看了必会(代码详细版)(中)
面向对象七大设计原则,看了必会(代码详细版)(中)
|
6月前
|
设计模式 数据可视化 程序员
设计模式概述、UML图、软件设计原则
设计模式概述 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。 1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ra
41 0
|
9月前
|
关系型数据库
面向对象七大设计原则,看了必会(代码详细版)(上)
面向对象七大设计原则,看了必会(代码详细版)(上)
面向对象七大设计原则,看了必会(代码详细版)(下)
面向对象七大设计原则,看了必会(代码详细版)(下)
架构整洁之道-07 设计原则-接口隔离原则SIP
接口隔离原则 Interface Segregation Principle,ISP - 客户端不应该依赖它不需要的接口 - 类间的依赖关系应该建立在最小的接口上
93 0
|
设计模式 前端开发 Java
面向对象设计的六大设计原则 (通俗易懂的版本)
六大原则虽说是原则,但它们并不是强制性的,更多的是建议。
编程笔记:三层架构(3-tier architecture)要点-1
编程笔记:三层架构(3-tier architecture)要点-1
|
设计模式 存储 数据可视化
Enterprise Architect 怎么看23 种设计模式的UML设计图
Enterprise Architect 怎么看23 种设计模式的UML设计图
198 0
Enterprise Architect 怎么看23 种设计模式的UML设计图
|
存储 设计模式 数据库
大话设计模式--第五章 依赖倒置原则
依赖倒置原则: 原话解释的是, 抽象不应该依赖于细节, 细节应该依赖于抽象. 说白了, 就是上面那句话。针对接口编程, 不要针对实现编程。
84 0