9
代碼合同很好的工作,直到你必須添加一個bazillion Contract.Assume(...)
來獲得框架代碼的結果。例如,MemoryStream.ToArray()
永遠不會返回一個空數組,儘管我可以從Reflector中查看它,但它沒有記錄爲合同,所以我必須在任何地方都使用Assume
。如何爲現有框架(BCL)代碼指定代碼合同?
是否有一種神奇的方式來爲已經存在的函數創建契約庫?我猜測,一旦你獲得了幾十個最常用的框架功能,警告就會變得更加美味。
今天,「從不返回空數組」*無論如何。關於合同的其中一件事是你不應該改變它。沒有這樣的合同*可能*表明它可能會改變。也許。 – 2010-10-12 20:17:27
是一個公平點,但在代碼合同的情況下,我懷疑這是因爲合同團隊沒有時間在任何地方添加合同。請參閱http://social.msdn.microsoft.com/Forums/en-NZ/codecontracts/thread/d8e2c2ad-de37-42ef-a854-02052d821975,其中一位團隊成員注意到「我們正在儘快填補空缺儘管我們可以,但它主要是由我們驅動的,或者你發現重要的差距在哪裏。理想情況下,我們會系統地通過圖書館並註釋它們,目前我們沒有人力。 – 2010-10-12 20:23:36