我开始阅读 .NET 代码合同的完整文档,我注意到您可以指定编译器不发出与您的合同相对应的代码。但我想知道为什么有人要这样做?!我的意思是,从文档来看,代码合同是关于指定代码的前/后/不变量。
查看另一个问题.net 4.0 Code Contracts。什么时候使用?他们什么时候浪费时间?,似乎合约应该防止对象的无效状态,但话又说回来,我为什么要禁用它们!这样一来,我岂不是为一大堆问题打开了大门吗?
是否应该将它们用作业务验证,例如确保 astartDate <= endDate
或者我应该使用旧的 if-then-throw 进行业务?如果我禁用代码合同,我的班级现在可能处于无效状态。
所以我的问题仍然存在,我为什么要禁用代码合同?