软件构造第五讲提纲

第五章 设计规约

一、函数、方法

1.方法是程序的积木,可以被独立开发、测试、复用

使用方法的客户端,无需了解方法内部具体如何工作

2.一个完整的方法:规约+实现

二、规约

  1. 注释形式的设计决策 给自己读 给别人读
  2. 规约:扮演防火墙角色

客户端不需要知道如何实现

实现者不需要如何被使用

3.行为等价性:站在客户端视角看行为等价性

根据规约判断是否行为等价

4.前置条件 后置条件

前置条件:对客户端的约束,在使用方法时必须满足的条件

后置条件:对开发者的约束,方法结束时必须满足的条件

前置条件满足,后置条件必须满足。前置条件不满足,则方法可以做任何事情。

当前置条件被违反时,说明客户端有bug,可以通过快速失败使bug更容易被找到和修复。

5.

/**

param/return 不能写出类型

不说实现细节

6.除非在后置条件里声明,否则方法内部不能改变输入参数

三、设计规约

  1. 规约的确定性、陈述性、强度
  2. 比较规约的强度

规约的强度S2>=S1:

S2的前置条件比S1的前置条件弱,S2的后置条件强于S1的后置条件。更少的要求,更多的承诺。

越强的规约,意味着实现者自由度更少,客户端责任更轻。

3.设计好的规约

(1)内聚的:Spec描述的功能应单一、简单、易理解(ready for change)

(2)信息丰富的

(3)足够强

(4)不能太强以至于做不到

(5)在规约里使用抽象类型,可以给方法的实现体与客户端更大的自由度

(6)是否检查前置条件已满足?

看方法范围已经check的代价

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值