.net 4.0代码合同.什么时候用?他们什么时候浪费时间?

pun*_*ter 9 .net unit-testing .net-4.0 code-contracts

我一直在研究.NET 4.0代码契约,并查看stackoverflow以及有关此问题.

我仍然没有遇到任何使用代码契约的示例代码,这让我感到疑惑..这真的很有用吗?或者也许它唯一有用的一个代码达到一定的复杂性?那里有人使用代码合同,他们真的很高兴吗?

在我看来,所有的代码契约都是一个断言在发生什么,什么出去与加入能够揣摩的值在编译时进出的方法......但随后这是怎么回事在你的所有方法上需要更多的代码..值得吗?

我注意到一个好处是,在我看来,你可以使用代码的合同类型的单元测试的第一线......然后,当你写单元测试,可以避免写一些比较基本的测试,因为代码契约覆盖它了. . 真的吗 ?

合同是否适用于WCF调用?我猜不是因为代理是自动创建的,你不能改变.

kem*_*002 7

我在任何时候需要验证输入参数需要具有特定值(数字为正,对象不为空)时使用它们.

对于输出,我随时都会使用它们,我确定返回值应该处于某种状态(例如,不是null).

在代码中签订合同可确保在意外值突然出现时抛出异常,而不会因为意外假设而导致对象意外地处于损坏状态的代码中进一步失效.

就个人而言,我认为它使代码更清洁.这种表示法使得编写的内容少得多(而不是使用if(.... == null)....).这种方式也是Contract.Requires它正在努力实现的目标.当我看到我知道代码正在评估参数处于某种状态时.

  • 无论如何,您应该验证您的输入.我认为它节省了时间,因为对于其他程序员来说,你的意图很明显.您可以使用if语句执行相同的操作,但Contract.Requires显示您正在验证输入.对于发生的事情没有猜测.另一个很酷的事情是,您可以定义合同在项目文件中的工作方式.在开发过程中,您可以将合同设置为在发生违规时立即停止程序. (4认同)