2012-04-18 43 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