契約式設計(Design by Contract?)是一種用于開發軟件的方法,該方法依賴于為程序的所有部分建立定義良好的接口參數或契約。盡管契約式設計(Design by Contract?)可以被視為通過文檔或建模實現的概念性開發風格,但它更廣泛...
契約式設計(Design by Contract?)是一種用于開發軟件的方法,該方法依賴于為程序的所有部分建立定義良好的接口參數或契約。盡管契約式設計(Design by Contract?)可以被視為通過文檔或建模實現的概念性開發風格,但它更廣泛地用于指代本機或者某些編程語言中的第三方機制,實際上需要對程序中的契約進行隱式編碼。使用Design by Contract?的目的是開發一個程序,并最終以更完整的方式進行編碼,從而消除更多的小錯誤,而支持語言對契約的強制執行使得任何殘存的錯誤都很容易被發現和捕捉。一個使用契約來處理函數和類的程序可以有一個更模塊化的設計,在這種設計中,單個類可以很容易地在其他程序中重用,因為它們的契約有明確的定義對于計算機,契約式設計(Design by Contract?)編程原理的基礎是現實世界中的業務契約思想。在此模型中,面向對象程序中的每個方法和類都定義了一個契約,與之交互的任何其他方法或對象都必須遵守該契約。每個類還可以有一個稱為類不變量的契約,該契約它必須在內部遵循,以確保外部契約不會損害其功能。在設計和編碼過程中,契約的兩個最重要部分是先決條件和后置條件。契約式設計模式的這兩個部分定義了調用方法之前程序的狀態和方法完成執行后程序的狀態。協定的其他部分可能因實現而異,但可能包括對其他模塊的交叉引用、同步條件和執行順序要求通過為每個類和方法開發契約,可以很容易地映射和預測程序不同部分之間的交互作用。通過使用斷言或其他機制強制執行契約,還可以確保程序在違反契約時不會試圖執行,因為在該狀態下生成的任何輸出在技術上都是無效的。當作為母語功能實現時,契約式設計有助于確保最終產品按預期運行,幾乎不會出現不可預見的錯誤。使用契約式設計(Design by Contract?)理念所帶來的一些復雜性包括在編碼開始之前,系統的設計時間更長,開發更精細,這對于一個大型項目來說有時是困難的,在本機支持契約的編程語言中使用的契約驗證機制可能會減慢程序的執行速度。對契約式設計(Design by contract?)方法的理解不足可能導致程序使用契約來執行基本的錯誤檢查,可能導致應用程序在發布后容易突然崩潰
-
發表于 2020-08-07 13:56
- 閱讀 ( 506 )
- 分類:電腦網絡