软件构造知识点6

1.规约内容
输入/输出的数据类型
功能和正确性
性能
不包括实现细节
有时包括一些异常处理
2.行为等价性:两个方法是否可以相互替换
站在客户端视角看行为等价性
根据规约判断是否行为等价。
3.规约的前置条件和后置条件
1)前置条件输入requires:对客户端约束,使用时满足的条件
后置条件输出effects:对开发者约束,方法结束时必须满足的条件
2)如果前置条件满足了,则后置条件必须满足
如果前置条件不满足,方法可做任何事情。
4.java中规约和代码分开两个文件
5.注意
1)除非规约必须如此,否则不应该修改输入参数
2)尽量避免使用mutable对象
6.如何比较两个规约,以判断是否可以用一个规约替换另一个?
前置条件更弱,后置条件更强的规约更强,可以替换另一个规约
更强的规约在diagram中表示为更小的区域
7.写规约的一些规则
1)内聚的
Spec功能单一,简单,只做一件事。两件事要分为两个方法
2)信息丰富
不能让客户端产生歧义
3)足够强
4)也要适当弱
例如打开文件,不能说一定打开文件,要说什么时候能打开,打不开会发生什么。
5)在规约里尽量使用抽象类型
如使用list不强调arraylist等具体实现。
8.precondition or postcondition?
取决于
(1)检查参数合法性代价有多大
代价小就不要给precondition
(2) 方法的适用范围
只在类内部(Private) 不precondition,在使用该方法的地方check
在其他地方使用(Public) 必须precondition 不满足就抛出异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值