先决条件
在计算机编程中,先决条件或先验条件指在执行一段代码前必须成立的条件。
如果先决条件被违反了,则代码将产生未定义行为,因此其预期的工作能否履行也是未知的。不正确的先决条件还可能引发安全问题。
通常,先决条件包括在关于这段代码的文档中。有时它可通过特定的语法结构(如卫语句或断言)在代码中进行检测。
例如,阶乘只定义于自然数(大于等于零的整数)。因此计算阶乘的程序将会假定输入的值是一个整数,并且它大于等于零,这就是一个先决条件。
在面向对象编程中
面向对象编程中先决条件是契约式设计的一个重要组成部分。契约式设计还包括后置条件和不变条件的概念。
要成功执行一个子程序所需的任何关于对象状态的限制条件都定义在先决条件中。从程序开发者的角度来看,这就构成了契约中子程序调用者的一部分。调用者有义务来确保在调用子程序前满足先决条件,而被调用的子程序则以后置条件来反馈给调用者。[1]
先决条件与继承
在继承的关系中,继承了子程序的子类必须满足先决条件。也就是说对被继承的子程序的任何实现或重新定义,也必须遵守他们所继承的契约。重新定义的子程序可以削弱先决条件,但不能增强。[2]