Validation Microsoft代码契约框架有多成熟?
微软最近在Devlab上发布了他们的框架,并获得了商业许可。我们有兴趣在我们的项目中使用它们(主要是C#,一些C++/CLI)来逐渐取代所有自定义验证代码,但我很想知道在我们承诺之前其他人在这方面的经验,特别是:Validation Microsoft代码契约框架有多成熟?,validation,.net-4.0,code-contracts,microsoft-contracts,Validation,.net 4.0,Code Contracts,Microsoft Contracts,微软最近在Devlab上发布了他们的框架,并获得了商业许可。我们有兴趣在我们的项目中使用它们(主要是C#,一些C++/CLI)来逐渐取代所有自定义验证代码,但我很想知道在我们承诺之前其他人在这方面的经验,特别是: 您认为该框架对于大型和复杂的商业项目是否足够成熟 您在使用时遇到了什么问题 你从中得到了什么好处 现在的痛苦是否超过了它的价值 我意识到这是一个有点主观的问题,因为它需要意见,但鉴于此框架是.NET 4.0的一个非常重要的组成部分,并且(可能)会改变我们编写验证代码的方式,我希望这
- 您认为该框架对于大型和复杂的商业项目是否足够成熟
- 您在使用时遇到了什么问题
- 你从中得到了什么好处
- 现在的痛苦是否超过了它的价值
- 社区论坛的存在。您将希望能够与其他开发人员讨论您遇到的不可避免的问题,并且您希望知道有相当强大的开发人员基础与您讨论解决方案
- 一个成功的试点项目发布。一般来说,当微软研究院发布一些他们认为足够成熟的产品用于商业项目时,他们将与一个组织合作进行试点,然后将该项目开源发布,作为概念证明和所有主要功能的试用。这将使人们对大多数常见合同场景都已涵盖并发挥作用充满信心
- 更完整的文档。简单明了,在某些情况下,您可能会希望使用Microsoft代码合同来处理一些您还无法使用的合同。您希望能够快速而清楚地说明您的场景还不受支持的原因。但是,在我看来,当前的文档将让您不断猜测和尝试不同的事情,这将导致大量的时间浪费
所以我的感觉是,现在,因为在3.5中,我们试图建立一个验证者没有充分理解的框架,它可能值得等待4.0。它还不够成熟 一旦微软发布了价格合理的VS版本,它就会出现,但是如果没有静态代码分析,它就根本不可用 拥有它的VS版本非常昂贵,只有极少数人能买得起 微软用他们的定价政策扼杀了这个惊人的想法,真是太遗憾了。我希望代码契约能成为主流,但它们不会
史诗般的失败。上一次对此的成熟回应是在2009年,而.NET 4已经过时。我想我们应该更新一下: 对于调试版本,代码契约可能已经足够成熟。 我意识到这是从“无害”到“基本无害”的升级 链接到PDF格式的完整文档。本文档概述了第5节中的使用指南。总之,您可以选择您对契约工具在发布版本中重新编写IL有多勇敢 我们正在使用“不要重写我的发布IL”模式 到目前为止,我最享受的是这个意想不到的好处:代码更少,因此要测试的代码也就更少了。你所有的保护条款都消失了
if(arg != null) {
throw new ArgumentNullException("arg");
}
// Blank line here insisted upon by StyleCop
变成:
Contract.Requires(arg != null);
你的功能比较短您的意图更加清晰。而且,您不再需要编写名为Argumentshouldbenull的测试来达到100%的覆盖率
到目前为止,我遇到了两个问题:
- 我有一个单元测试,它依赖于合同失败而成功。你可能会说测试的存在是一个错误,但我想以测试的形式记录这一特定的禁止。在我的生成服务器上测试失败,因为我没有安装工具。解决方案:安装工具
- 我们正在使用两个重写IL的工具:一个