我想在C#中实现DBC。我面对它的规范和代码合同。
Spec#和Code Contract之间的区别是什么?代码合同和规范之间的差异#
4
A
回答
4
这是从Code Contracts FAQs at Microsoft Research:
待办事项代码契约有什么用规格#?
代码合同是来自Spec#项目的衍生产品。 Spec#的研究重点是在 继承,回调,别名和多线程的存在下理解对象不变量的含义。 Spec#是C#2.0版的 超集,并使用源级重写器将 合约编织到代码中。它使用验证条件生成和 定理证明器来进行Spec#代码的静态验证。但是 与维护对象 不变的所有复杂问题妥善处理不变价格:验证变得不平凡。这就是为什么 规范#还需要一个所有权规定,以知道哪些对象可能是别名或不能相互混淆的。
代码合同是从规范#学习的结果,什么工作和 什么没有。与规范#不同,代码契约是语言不可知的,因此可以跨所有.NET语言工作,从VB到C#到F#。重写器 适用于MSIL,因此不依赖于特定的编译器。它的 静态分析引擎使用抽象解释,这比验证更快,更可预测;此外,抽象 的解释推断环路不变量和方法合同,其中 有助于代码合同的采用和易用性。
因此,Code Contracts似乎是未来更受“支持”的工具。
+0
重要的是,“支持”仍然在这里引号。代码合同仍然被认为是一个alpha质量的研究项目,它没有对完全支持的产品进行严格的测试,偶尔也会中断。 – 2014-10-21 15:38:17
相关问题
- 1. scanf的宽度规范和scanf_s之间的差异
- 2. 本地和远程JSON代码之间的代码差异
- 3. 机器代码和处理器代码之间的差异
- 4. 代码合同和异常抛出差异
- 5. 代码合同和异步
- 6. VBA:&和+之间的差异
- 7. 之间的差异和::: ++
- 8. 源代码和“检查元素”之间的差异
- 9. 页面源代码和检查元素i之间的差异
- 10. PHP:差异之间 - >和::
- 11. 合同异步和同步代码
- 12. 在规范中组合C#代码和数据库代码
- 13. SSIS-合并和合并之间的差异加入
- 14. 在我当前的未被代码的代码和同一分支上的远程头之间的差异
- 15. Url.Action和Html.RenderActionLink和Html.RenderAction之间的差异
- 16. jQuery.each和正常循环之间的javascript/jquery范围差异?
- 17. Ruby范围:MyClass.new和:: MyClass.new之间的差异
- 18. 计算不同列和行之间的时间差异[MYSQL]
- 19. 针对不同Java版本的源代码之间的性能差异?
- 20. 如何解决Heroku上的代码与Github上的代码之间的差异?
- 21. 用于显示两条记录之间差异的SQL代码
- 22. 两个布尔代码之间的差异
- 23. 得到两个字符代码之间的差异在Ruby中
- 24. 差异之间的两个汇编代码
- 25. C和C++之间的链接差异?
- 26. JSONLint和PHP之间的差异JSON_DECODE
- 27. cabal包之间的差异readPackageDescription和parsePackageDescription
- 28. CrudRepository findOne()和JpaRepository getOne()之间的差异
- 29. SAS和R之间的输出差异
- 30. OT和CRDT之间的差异
我认为规范编号和代码合同是围绕建筑合同的竞争想法(或类似但不同)。我不能确定,但我认为Code Contracts赢得了这场比赛。 – Prescott 2014-10-19 22:20:12