- 设计规约
目标:方法的规约
前置/后置条件
欠定规约,非确定规约
陈述式、操作式规约
规约强度及其比较
如何写出好的规约
- “方法”是程序的“积木”,可以被独立开发、测试和复用,需要抽象
代码中蕴含的“设计决策”:给编译器度
注释中蕴含的“设计决策”:给自己和别人读
规约给“供需双方”都确定了责任,在调用时候双方都要遵守。
- 前置条件和后置条件
前置条件:对客户端的约束,在使用方法时必须满足的条件
后置条件:对开发者的约束,方法结束时必须满足的条件
契约:前置条件满足,后置条件必须满足
可以加入@requires 和 @ effects
- 规约的评价
规约的确定性;规约的陈述性;规约的强度
前置条件和后置条件的切分考虑
强的规约,放松的前置条件和更严格的后置。
- 欠定规约:同一个输入有多个输出
非确定规约:同一个输入,多次执行时的输出可能不同
操作式规约:伪代码
声明式规约:没有内部实现描述,只有“初-终”
例子
/**
*
*
*/