羿先生的学习笔记[6]: 规约(Specification)
一、什么是规约
软件设计中的规约(Specification),指明了某个方法要求的输入及产生的影响。
规约是程序与客户端之间达成的一种契约:使用者有义务按照规约的要求输入数据,程序对正确输入的数据应进行正确的处理。使用者和程序都有义务遵循规约。
规约据此可以分为两部分:前置条件(pre-condition)和后置条件(post-condition)。前置条件是对客户端的约束,是使用方法时必须满足的条件;后置条件是对开发者的约束,是方法结束时必须满足的条件 。
使用者在使用方法时,不必关心方法的具体实现,只需阅读规约便可以理解方法的作用。
二、如何写规约
我们以下面这个方法为例:
public static int find(int[] arr, int val)
requires: val occurs exactly once in arr
effects: return index i such that arr[i] = val
方法在arr数组中找到val值并返回val值的索引,要求val在数组中仅出现一次。
我们用注释的方式格式化地给出规约:
/**
* Find a value in an array
* @param arr array to search, requires that val occurs ex