5 Designing Specification
Spec:是一种契约,规定程序与客户端之间达成的一致
给“供需双方”都确定了责任,在调用的时候双方都要遵守。
为什么要写Spec?
1.很多bug来自于双方之间的误解
2.不写下来,那么不同开发者的理解就不同
3.没有规约,难以定位错误
4.精确地规约有助于区分责任
5.客户端无需阅读调用函数的代码,只需要理解spec即可
SPec的详细内容:
1.前置条件:对客户端的约束,在使用方法时必须满足的条件
2.后置条件:对开发者的约束,方法结束时必须满足的条件
3.契约:如果前置条件满足了,后置条件必须满足。
如果前置条件不满足,则方法可以做任何事情。
如何比较两个规约?以判断是否可以用一个规约去替换另一个?
什么样的规约强度更强?
前置条件弱,后置条件更强(要求的少,做的多)
注意:比较后置条件变强变弱,是要在满足前置条件的基础上。