我一直在研究 .NET 4.0 代码契约并在 stackoverflow 上查找有关此问题的问题。
我仍然从未遇到过任何使用代码契约的示例代码,这让我想知道..这真的有用吗?或者也许它是您的代码达到一定复杂性时唯一有用的一个?有人使用代码合约并且真的很高兴他们这么做了吗?
在我看来,所有的代码契约都是关于方法的进出内容的断言,此外还能够尝试找出在编译时进出的值......但是然后这将需要在您的所有方法上添加更多代码..值得吗?
我注意到的一个好处是,在我看来,您可以使用代码契约作为单元测试的第一行...然后,当您编写单元测试时,可以避免编写一些更基本的测试,因为代码契约涵盖了已经……是真的吗?
合约可以与 WCF 调用一起使用吗?我猜不是因为代理是自动与您一起创建的,所以您无法更改。
最佳答案
每当我需要验证输入参数是否需要具有特定值(数字为正,对象不为空)时,我都会使用它们。
对于输出,只要我确定返回值应处于某种状态(例如不为空),我就会使用它们。
在代码中包含契约可确保在出现意外值时抛出异常,而不是在代码中进一步抛出异常,因为意外的假设可能会导致对象意外处于损坏状态。
就我个人而言,我认为这使代码更加简洁。这种表示法使得编写起来少了很多(而不是使用 if(....== null)....)。这样,Contract.Requires 也非常提前地实现了它想要完成的任务。当我看到它时,我知道代码正在评估参数是否处于某种状态。
关于.net 4.0 代码契约(Contract)。什么时候使用?他们什么时候浪费时间了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3111332/