先決條件
在計算機編程中,先決條件或先驗條件指在執行一段代碼前必須成立的條件。
如果先決條件被違反了,則代碼將產生未定義行為,因此其預期的工作能否履行也是未知的。不正確的先決條件還可能引發安全問題。
通常,先決條件包括在關於這段代碼的文檔中。有時它可通過特定的語法結構(如衛語句或斷言)在代碼中進行檢測。
例如,階乘只定義於自然數(大於等於零的整數)。因此計算階乘的程序將會假定輸入的值是一個整數,並且它大於等於零,這就是一個先決條件。
在面向對象編程中
面向對象編程中先決條件是契約式設計的一個重要組成部分。契約式設計還包括後置條件和不變條件的概念。
要成功執行一個子程序所需的任何關於對象狀態的限制條件都定義在先決條件中。從程序開發者的角度來看,這就構成了契約中子程序調用者的一部分。調用者有義務來確保在調用子程序前滿足先決條件,而被調用的子程序則以後置條件來反饋給調用者。[1]
先決條件與繼承
在繼承的關係中,繼承了子程序的子類必須滿足先決條件。也就是說對被繼承的子程序的任何實現或重新定義,也必須遵守他們所繼承的契約。重新定義的子程序可以削弱先決條件,但不能增強。[2]