关于Spec的一些理解

spec,即程序的规约,是程序员和客户端之间的一种契约,简单来说,就是Spec给“供需双方”都确定了责任,在调用的时候双方都要遵守。

Spec的优点:

1.可以隔离“变化”,无需通知客户端

2.可以提高代码效率

3.可以提高代码效率

Spec分为前置条件和后置条件

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

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

Spec的强度

讨论spec的强度,是为了能够给用新的方法去替换旧的方法划分一个可行与否的标准。我们认为如果一个方法能够替换旧的方法,那么前者的spec一定比后者强

具体而言,如果规约S2>=S1:

1.前置条件更弱(条件更宽松,范围更大)

2.后置条件更强(范围更小)

我是这样理解的:如果想让新的方法和旧的方法行为一致,那么任意旧的输入一定再前置条件内,故前置条件要更宽松(定义域变大),同时得到的结果仍要包含于旧的方法得到的结果,即后置条件要更严格(映射的值要减小)

另外要注意,判定后置条件变化时要以旧的前置条件为前提

LSP中的Spec

我们知道,LSP要求子类的RI>=父类,子类方法的Spec>=父类,其目的就是为了让子类能完美继承父类的行为

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值