问题标签 [design-by-contract]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
379 浏览

validation - asp.net 应用程序目前最好的验证框架是什么?

为了确保它是一种 DRY 方法,所有验证逻辑当然应该进入业务逻辑(模型)。

  • 验证消息如何呈现给视图,应该能够本地化错误消息
  • 你能从验证框架生成javascript吗?与 JQuery 的兼容性将是完美的
  • 该框架是否与 DbC 方法兼容?

编辑:我认为这是迄今为止最好的一个,Castle 验证器 + 实时验证 http://blog.codeville.net/2008/04/30/model-based-client-side-validation-for-aspnet-mvc/

0 投票
2 回答
175 浏览

dynamic-languages - Design-by-Contract 能否像应用于静态类型语言一样容易/以及应用于动态语言?

标题几乎概括了要点。

我感兴趣的是,在使用动态语言时是否可以启用/禁用合同执行,而不会面临严重/未诊断失败的严重风险?

如果不是,那么关键似乎(对我来说)是任何强制执行都是组件逻辑的必需部分,而不是根据 DbC 强制执行的可移除性精神是可选/可移除的。

0 投票
3 回答
561 浏览

java - 按合同库(界面)设计的想法?

我正在研究 Java 库的合同设计,这是我迄今为止在接口方面提出的。

用户可以调用executeContract,并且executeContract 在调用'require' 后调用invokeContract。在executeContract 之后调用ensure 以确保invokeContract 返回的内容的正确性。

此代码也可用作回调方法(匿名内部类调用)。

你怎么认为?这是按合同设计的吗?到目前为止,这有助于我编写可测试的 Java 代码。

0 投票
2 回答
365 浏览

.net - 您使用什么工具来进行合同设计?

我曾经使用Microsoft CodeContracts三周,现在我的一半代码只是合同。我有几十个未经证实的地方,我不能使用运行时检查,因为 IL 重写会阻止覆盖工具显示某些内容,并且编译时间少于可以接受的时间。

我不喜欢这个。现在似乎是寻求帮助的好时机。什么工具用于您的常规开发?

0 投票
5 回答
2732 浏览

design-by-contract - 契约式设计的最佳实践是什么?

契约式设计编程的最佳实践是什么。

在大学时,我通过合同范式学习设计(在 OO 环境中)我们已经学习了三种解决问题的方法:

1)总编程:涵盖所有可能的例外情况(参见数学)

2)名义规划:只有在满足前提条件时才“承诺”正确的效果。(否则效果未定义)

3)防御性编程:使用异常来表示方法的非法调用

现在,我们已经专注于不同的 OO 场景在每种情况下的正确使用,但我们还没有学会何时使用 WHICH……(主要是练习强制执行的策略……)

现在我觉得我没有问过我的老师很奇怪(但话说回来,在上课时,没有人问过)

就个人而言,我现在从不使用名义,并且倾向于用异常替换前置条件(所以我宁愿使用 : throws IllegalDivisionByZero,而不是说明'前置条件:除法器应该不同于零)并且只编程有意义的总和(所以我不会返回除以零的常规值),但这种方法只是基于个人的发现和喜欢。

所以我问你们:

有没有最好的做法??

0 投票
3 回答
815 浏览

c - C 语言中的契约式设计,用于自动定理证明

我正在处理几个 C 项目,我想使用自动定理证明来验证代码。理想情况下,我只想使用 ATP 来验证功能合同。C/gcc 或外部软件/包/等中是否有任何功能可以实现按合同设计风格的编码?

如果不是,那只是我自己开始的动力。

我对此的参考可能是来自 MSR 的 Spec# 或 Sing#,但我是一名开源人员,我正在寻找开源解决方案。

0 投票
3 回答
664 浏览

java - Java 中的参数检查或按合同设计 (GWT)。从哪儿开始?

我在玩GWT。我正在寻找基本的参数检查。我不需要不变量或结果确保。我对该主题的最佳实践感兴趣。

例如,在 c# 中,我使用以下选项之一:

  1. if (arg1 != null) throw new ArgumentNulException....; // Official for public API;
  2. Args.NotNull(arg1); // Home grown.
  3. Contracts.Requires(arg1 != null); // Internal contract validation.

什么是我最好的起点?

好的,我现在找到了什么。

  1. 验证方法参数
  2. 断言编程
0 投票
7 回答
10192 浏览

c# - ReSharper - 使用 Microsoft.Contracts 时可能的空分配

有没有办法向 ReSharper 表明由于按合同设计需要检查而不会发生空引用?例如,以下代码将Possible 'null' assignment to entity marked with 'NotNull' attribute在 ReSharper 中的第 7 行和第 8 行引发警告 ( ):

真正奇怪的是,如果您删除该Contract.Requires(...)行,ReSharper 消息就会消失。

更新

我通过下面的 Mike 也提到的 ExternalAnnotations 找到了解决方案。下面是如何为 Microsoft.Contracts 中的函数执行此操作的示例:

  • 在ReSharper 目录Microsoft.Contracts下创建一个名为的目录。ExternalAnnotations
  • 接下来,创建一个名为Microsoft.Contracts.xml并填充的文件,如下所示:

  • 重新启动 Visual Studio,消息消失!
0 投票
2 回答
848 浏览

.net - .NET 4.0 的合同设计与 Eiffel 相比如何?

我有“高兴”在大学里由 Bertrand Meyer 本人教授 Eiffel,并且刚刚读到 .NET 4.0 将包括合同设计。

任何有见识的人都可以详细说明与 Eiffel 现有功能集相比它的强大程度吗?

是否支持接口合同?

0 投票
0 回答
290 浏览

.net - Microsoft 合同:程序集加载导致元数据导入警告

我正在尝试了解Microsoft Code Contracts库的方法,并且我具有以下简单功能:

尝试编译时,contracts 静态编译器会抛出以下警告消息:

然后立即放弃(并且不尝试进行任何进一步的合同处理)。如果我删除设置的代码,DefaultToolsVersion则合同验证程序可以正常工作,但这毫无意义,因为它会导致代码不正确。

我在谷歌上找不到任何提及...有什么方法可以解决这个问题,还是只是合同库中的一个错误?(诚​​然,它处于预发布状态)

谢谢