[转]契约设计

DbC 元素
先验条件。针对方法(method),它规定了在调用该方法之前必须为真的条件。
后验条件。也是针对方法,它规定了方法顺利执行完毕之后必须为真的条件。
不变式。针对整个类,它规定了该类任何实例调用任何方法都必须为真的条件。
DbC 六大原则
区分命令和查询。
将基本查询同派生查询区分开。 针对每个派生查询,设定一个后验条件,使用一个或多个基本查询的结果来定义它。
对于每个命令都撰写一个后验条件,规定每个基本查询的值。
对于每个查询和命令,采用一个合适的先验条件。
撰写不变式来定义对象的恒定特性
DbC 六大准则
在适当的地方添加物理限制。
先验条件中尽可能使用高效的查询。
用不变式限定属性。
为了支持特性的重定义,用相应的先验条件确保每个后验条件。
将预期发生的变化和框定规则这两种不同的限制分别放置在不同的类中。
有保密性要求,则违背保密性的查询可以在契约中使用,然后被设为私有属性。
Eiffel中的"契约"
契约关系的双方是平等的,对整个bussiness的顺利进行负有共同责任,没有哪一方可以只享有权利而不承担义务。
契约关系经常是相互的,权利和义务之间往往是互相捆绑在一起的;
执行契约的义务在我,而核查契约的权力在人;
我的义务保障的是你的利益,而你的义务保障的是我的利益;

posted @ 2009-09-16 16:50  pursue  阅读(189)  评论(0编辑  收藏  举报