引言
在设计方法的时候,不能仅仅书写代码,还应向客户端表明方法应该如何使用,必须描述清楚输入什么数据产生什么结果,因此引入方法规约(specification)的概念。
规约是什么
方法的规约(specification)描述了方法如何使用,包括对输入的要求和相应的输出结果(返回值)。一方面确定了程序的责任,另一方面也界定了客户端的责任(对输入的要求)。
前置条件和后置条件
前置条件(pre-condition)是对客户端的约束,在使用方法时必须满足的条件
后置条件(post-condition)是对开发者的约束,方法结束时必须满足的条件
如果前置条件满足了,后置条件必须满足;若前置条件不满足,则方法可以做任何事。
往往用@param代表参数,用@return代表返回值,用@throws代表异常:
规约强度的比较
当两个spec后置条件相同时,前置条件更弱的spec强度更强;
当两个spec前置条件相同时,后置条件更强的spec强度更强。
当两个spec前置条件相同时,后置条件相同时,有异常的spec强度更若。
往往可以使用更强的spec代替更弱的spec