设计规约 {ignore=true}
1. 规约
规约在不同语言中有不同的写法,比如在Java
中,规约由/** ... */
包裹,而在Python
中,规约由""" ... """
包裹。
规约的作用是对代码进行说明,比如对函数的功能进行说明,对类的作用进行说明等等。
通常,我们在规约中记录函数的功能,参数,返回值等等。
我们的实现围绕着规约进行,即先写规约,再实现规约。
客户端无需阅读调用函数的代码,只需理解spec即可。
2. 规约结构
- 前置条件:对客户端的约束,在使用方法时必须满足的条件。
- 后置条件:对开发者的约束,方法结束时必须满足的条件。
- 契约:如果前置条件满足了,后置条件必须满足。
如果 S 1 S_1 S1 的前置条件弱于 S 2 S_2 S2 的前置条件,且 S 1 S_1 S1 的后置条件强于 S 2 S_2 S2 的后置条件,则可以用 S 1 S_1 S1 替换 S 2 S_2 S2。
称 S 1 S_1 S1 强于 S 2 S_2 S2,相当于对开发者提出了更严格的要求,但是对客户端的要求更宽松。