软件构造-规约

1 定义

规约是一个对象和它的使用者之间的协议。包括输入/输出的数据类型、功能和正确性以及性能。规约只讲“能做什么”,不讲“怎么实现”。

2 现实情况

很多bug来自于双方之间的误解,不写下来,那么不同开发者的理解就可能不同,没有规约难以定位错误。精确的规约有助于区分责任,客户端无需阅读调用函数的代码,只需理解spec即可。规约可以隔离“变化”,无需通知客户端。规约扮演“防火墙”角色,这种“防火墙”的效果是“解耦”,允许单元的代码和客户端的代码被独立地改变,只要这些改变遵守规约。

3 前置条件和后置条件

前置条件是对客户端的约束,在使用方法时必须满足的条件。后置条件是对开发者的约束,方法结束时必须满足的条件。如果前置条件满足了,后置条件必须满足。如果方法被调用时,前提条件不成立,那么实现就不受后置条件的约束,它可以自由地做任何事情,包括不终止、抛出异常、返回任意的结果、进行任意的修改,等等。

4 规约的强度

spec变强=更放松的前置条件+更严格的后置条件。如果S3既不比S1强也不比S1弱,那么这些规范可能会重叠(比如存在只满足S1、只满足S3、同时满足S1和S3的实现),也可能是不相交的。

5 声明式规约和操作式规约

操作式规约给出了方法所执行的一系列步骤;伪代码描述是操作性的。声明式规约不提供中间步骤的细节。相反,他们只是给出最终结果的属性,以及它与初始状态的关系。

声明式规约更有价值。它们通常更短,更容易理解,而且最重要的是,不会无意中暴露出客户可能依赖的实现细节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值