2012-04-18 55 views
5

我看到了一個C#代碼合同的令人敬畏的演示,我想開始將它們實現爲可能的代碼。我希望我已經在我的代碼中擁有了它們。一個人從哪裏開始?從哪裏開始代碼合同?

我沒有拿走演示中的任何印刷材料。任何建議閱讀?

有代碼合同的初學者的任何建議?

在此先感謝您的幫助。

+2

http://devjourney.com/blog/code-contracts-part-1-introduction/ – albertjan 2012-04-18 19:46:04

+2

當心的是,代碼契約在.NET Framework BCL註釋有些參差不齊。例如,總是返回非空對象的許多方法(當然,除非它拋出)不標記爲這樣。這迫使你用空檢查或'Assume'調用亂拋垃圾來滿足靜態分析器。 – phoog 2012-04-18 21:10:48

+2

@phoog是正確的,但代碼合同團隊一直在努力將合同添加到越來越多的BCL中,所以這幾乎每次發佈都在改進。 – Andy 2012-04-19 12:23:03

回答

6

我這個維基描述Design by Contract開始。然後深入MS' implementation的文檔。要真正將其應用於您的代碼中,我想您幾乎可以從任何地方開始,但可能從最不可能產生影響的區域開始。所以如果合適的話,可以添加一些Contract.Requires到ctor參數。當你感覺更舒適時,你可以將它們添加到界面中,但要注意這可能會讓事情變得糟糕......但是以一種很好的方式。錯誤或警告意味着您違反了DbC,可能是Liskov Substitution Principle