C# 代码契约和规范之间的差异#

C# 代码契约和规范之间的差异#,c#,code-contracts,design-by-contract,spec#,C#,Code Contracts,Design By Contract,Spec#,我想在C#中实现DBC。我面临着它的规范和代码合同。 规范和代码合同之间有什么区别?这来自: 代码契约是否与规范有关? 代码契约是Spec项目的衍生产品。Spec#的研究重点是 理解对象不变量在存在时的含义 继承、回调、别名和多线程。规格是一个 C#v2.0的超集,并使用源代码级重写器来编织 将合同写入代码。它使用验证条件生成和 Spec#代码静态验证的定理证明器。但是 妥善处理与维护对象相关的所有复杂问题 不变量有一个代价:验证变得非常重要。这就是为什么 Spec#还需要一个所有权规则来知道哪

我想在C#中实现DBC。我面临着它的规范和代码合同。
规范和代码合同之间有什么区别?

这来自:

代码契约是否与规范有关?

代码契约是Spec项目的衍生产品。Spec#的研究重点是 理解对象不变量在存在时的含义 继承、回调、别名和多线程。规格是一个 C#v2.0的超集,并使用源代码级重写器来编织 将合同写入代码。它使用验证条件生成和 Spec#代码静态验证的定理证明器。但是 妥善处理与维护对象相关的所有复杂问题 不变量有一个代价:验证变得非常重要。这就是为什么 Spec#还需要一个所有权规则来知道哪些对象可能 别名或不能互相别名

代码契约是从Spec#什么工作和 什么没有。与规范不同,代码契约与语言无关,并且 因此,可以跨所有.NET语言工作,从VB到C#到F#。重写者 在MSIL上工作,因此不依赖于特定的编译器。它的 静态分析引擎使用抽象解释,这非常有用 比核查更快、更可预测;进一步抽象 解释推断循环不变量和方法契约,这 有助于代码契约的采用和易用性

因此,代码合同似乎将是未来更“受支持”的工具。

我认为规范合同和代码合同都是围绕建筑合同的相互竞争的想法(或相似但不同)。我不能确定,但我认为代码契约赢得了这场竞赛。重要的是,“受支持”仍然在这里引用。代码契约仍然被认为是一个阿尔法质量研究项目,它没有对完全支持的产品进行严格测试,并且偶尔会中断。