Dot-Net

.net 4.0 程式碼契約。什麼時候使用?他們什麼時候浪費時間?

  • October 13, 2011

我一直在研究 .NET 4.0 Code Contracts 並查看 stackoverflow 以及關於此的問題。

我仍然從未遇到任何使用程式碼契約的範常式式碼,這讓我想知道.. 這真的有用嗎?或者也許它唯一有用的一個你的程式碼達到了一定的複雜性?有人在使用程式碼契約並且真的很高興他們這樣做了嗎?

在我看來,所有程式碼契約都是關於方法的輸入和輸出的斷言,此外還能夠嘗試找出在編譯時輸入和輸出的值……但接下來就是這樣在所有方法上都需要更多程式碼..值得嗎?

我注意到的一個好處是,在我看來,您可以使用程式碼契約作為單元測試的第一行……然後當您編寫單元測試時可以避免編寫一些更基本的測試,因為程式碼契約已經涵蓋了它。 。 真的嗎 ?

契約是否適用於 WCF 呼叫?我猜不是因為您自動創建了一個代理,您無法更改。

每當我需要驗證輸入參數是否需要具有特定值(數字為正,對像不為空)時,我都會使用它們。

對於輸出,只要我確定返回值應該處於某種狀態(例如,不為空),我就會使用它們。

在程式碼中包含契約可確保在出現意外值的那一刻拋出異常,而不是在程式碼中更進一步,因為意外假設,對象可能會意外地處於損壞狀態。

就個人而言,我認為它使程式碼更清晰。該符號減少了編寫(而不是使用 if(….== null)….)。這種方式Contract.Requires在它試圖完成的事情上也非常領先。當我看到我知道程式碼正在評估參數處於某種狀態時。

引用自:https://stackoverflow.com/questions/3111332