注:本文仅为本人上课时的一些心得体会,由于本人能力有限,文章会有很多错漏之处,还请各位谅解,欢迎指正。
前言
在实验编写中,我经常用spec来规范我的函数功能,虽然实验的客户端和服务端都是我自己,但我认识到将来在多人协作中spec的重要性,下面我来说说我对spec强弱对比的理解
Spec的强弱
spec的强度取决于其前置条件和后置条件的强度。我们可以这样规定一个spec的强度: S2>=S1,当:
- S2的前提条件弱于或等于S1
- 对于满足S1前提条件的状态,S2的后置条件大于或等于S1
这时就可以用S2代替S1。
举个例子
原始的spec中:
- 前置条件要求数组中只出现一次val。
- 后置条件返回val在a中的下标。
在stronger中:
- 前置条件变成要求数组中至少出现一次val,前置条件变弱了。
- 后置条件不变
- 所以比较而言spec变强了
在much stronger中:
- 前置条件与stronger相同。
- 后置条件输出val的最小下标,如果有多次val的出现,后置条件变强了
- 所以much stronger的spec比strong的还要强