August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
使用前置条件将有助于我们避免设计错误和及早发现使用错误。这种显式说明需求的思想能够被应用在其他方面么?是的,你可以马上联想到:返回值!毕竟,我们一般都需要声明函数的返回值是什么。也就是说,如果一个函数返回一个值的话,我们总是要约定这个返回值是怎样的(否则的话调用者如何知道得到的是什么呢?)。让我们再次看一下面积函数(来自5.6.1节):
这个程序检查了前置条件,但是它没有在注释里面对此进行说明(对于这么一个小函数来说,这还是可以接受的),而且假定计算是正确的(这种简单计算应该也没问题)。但是,我们可以更明确一些:
我们不可能对后置条件进行完全检查,但是我们至少可以检查其中一部分:返回值是否是正数。
试一试
尝试找出一组数据,它们能够满足当前版本面积函数的前置条件,但不满足后置条件。
前置和后置条件提供了基本的程序完整性检查。从这个角度看,它们与不变式(9.4.3节)、正确性(4.2节和5.2节)和测试(第26章)等概念紧密相关。