[转]契约设计

DbC 元素

先验条件。针对方法(method),它规定了在调用该方法之前必须为真的条件。

后验条件。也是针对方法,它规定了方法顺利执行完毕之后必须为真的条件。

不变式。针对整个类,它规定了该类任何实例调用任何方法都必须为真的条件。

DbC 六大原则

区分命令和查询。

将基本查询同派生查询区分开。 针对每个派生查询,设定一个后验条件,使用一个或多个基本查询的结果来定义它。

对于每个命令都撰写一个后验条件,规定每个基本查询的值。

对于每个查询和命令,采用一个合适的先验条件。

撰写不变式来定义对象的恒定特性

DbC 六大准则

在适当的地方添加物理限制。

先验条件中尽可能使用高效的查询。

用不变式限定属性。

为了支持特性的重定义,用相应的先验条件确保每个后验条件。

将预期发生的变化和框定规则这两种不同的限制分别放置在不同的类中。

有保密性要求,则违背保密性的查询可以在契约中使用,然后被设为私有属性。

Eiffel中的"契约"

契约关系的双方是平等的,对整个bussiness的顺利进行负有共同责任,没有哪一方可以只享有权利而不承担义务。

契约关系经常是相互的,权利和义务之间往往是互相捆绑在一起的;

执行契约的义务在我,而核查契约的权力在人;

我的义务保障的是你的利益,而你的义务保障的是我的利益;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值