我讀的書Java Concurrency in Practice並得到一個有點困惑了這些條件:有什麼區別前置條件,後置條件和不變在計算機術語
- 前期狀態
- 後置條件
- 不變
有人可以解釋我他們(如果有可能的話,舉個例子)?
我讀的書Java Concurrency in Practice並得到一個有點困惑了這些條件:有什麼區別前置條件,後置條件和不變在計算機術語
有人可以解釋我他們(如果有可能的話,舉個例子)?
你有很多編寫Java,特別是多線程代碼,問題,如果你不明白這些簡單的想法:
它們都是「合約編程」這個概念的一部分。它是由一個名叫C.A.R. Hoare的人發明的。 Bertrand Meyer在它周圍建立了一個名爲Eiffel的面嚮對象語言。沒有人使用它,但他因爲它而在陽光下度過了一天。
埃菲爾不是很受歡迎。在我寫這篇文章時,有超過400萬個問題,但其中只有32個被標記爲「埃菲爾」。
更新:2016年6月29日SO上有11,966,392個問題。其中只有92個被標記爲「埃菲爾」。埃菲爾問題的百分比大致保持在0.00077%左右。
我糾正 - 謝謝,flamingpenguin。我已經更新了我的答案。
http://en.wikipedia.org/wiki/Hoare_logic – lexicalscope
所以,當我編寫一個具有某些前提條件的方法時,我會檢查是否滿足這些前提條件,或者我是否會假設客戶端足夠聰明,不會違反先決條件? – Ungeheuer
您的選擇,但整個想法是驗證和防止錯誤。問問自己消費者如何知道你的合同。 – duffymo
傾向於幫助您發佈有關SO的更正確的問題,請提出具體問題,這些問題顯示了您自己的研究/工作,併爲您的問題增加了價值。一般來說,你可以在互聯網上找到的東西不會在SO上提出很好的問題。 PS:沒有downvoted你自己。 – Bhaskar
這有點苛刻... – yshavit
問題如何模糊?他希望澄清這些術語在代碼示例中的含義。他展示了研究,因爲他正在閱讀該書。有時候,我只是在研究我的裝備。啊。 – Ungeheuer