问题标签 [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.
validation - asp.net 应用程序目前最好的验证框架是什么?
为了确保它是一种 DRY 方法,所有验证逻辑当然应该进入业务逻辑(模型)。
- 验证消息如何呈现给视图,应该能够本地化错误消息
- 你能从验证框架生成javascript吗?与 JQuery 的兼容性将是完美的
- 该框架是否与 DbC 方法兼容?
编辑:我认为这是迄今为止最好的一个,Castle 验证器 + 实时验证 http://blog.codeville.net/2008/04/30/model-based-client-side-validation-for-aspnet-mvc/
dynamic-languages - Design-by-Contract 能否像应用于静态类型语言一样容易/以及应用于动态语言?
标题几乎概括了要点。
我感兴趣的是,在使用动态语言时是否可以启用/禁用合同执行,而不会面临严重/未诊断失败的严重风险?
如果不是,那么关键似乎(对我来说)是任何强制执行都是组件逻辑的必需部分,而不是根据 DbC 强制执行的可移除性精神是可选/可移除的。
java - 按合同库(界面)设计的想法?
我正在研究 Java 库的合同设计,这是我迄今为止在接口方面提出的。
用户可以调用executeContract,并且executeContract 在调用'require' 后调用invokeContract。在executeContract 之后调用ensure 以确保invokeContract 返回的内容的正确性。
此代码也可用作回调方法(匿名内部类调用)。
你怎么认为?这是按合同设计的吗?到目前为止,这有助于我编写可测试的 Java 代码。
.net - 您使用什么工具来进行合同设计?
我曾经使用Microsoft CodeContracts三周,现在我的一半代码只是合同。我有几十个未经证实的地方,我不能使用运行时检查,因为 IL 重写会阻止覆盖工具显示某些内容,并且编译时间少于可以接受的时间。
我不喜欢这个。现在似乎是寻求帮助的好时机。什么工具用于您的常规开发?
design-by-contract - 契约式设计的最佳实践是什么?
契约式设计编程的最佳实践是什么。
在大学时,我通过合同范式学习设计(在 OO 环境中)我们已经学习了三种解决问题的方法:
1)总编程:涵盖所有可能的例外情况(参见数学)
2)名义规划:只有在满足前提条件时才“承诺”正确的效果。(否则效果未定义)
3)防御性编程:使用异常来表示方法的非法调用
现在,我们已经专注于不同的 OO 场景在每种情况下的正确使用,但我们还没有学会何时使用 WHICH……(主要是练习强制执行的策略……)
现在我觉得我没有问过我的老师很奇怪(但话说回来,在上课时,没有人问过)
就个人而言,我现在从不使用名义,并且倾向于用异常替换前置条件(所以我宁愿使用 : throws IllegalDivisionByZero,而不是说明'前置条件:除法器应该不同于零)并且只编程有意义的总和(所以我不会返回除以零的常规值),但这种方法只是基于个人的发现和喜欢。
所以我问你们:
有没有最好的做法??
c - C 语言中的契约式设计,用于自动定理证明
我正在处理几个 C 项目,我想使用自动定理证明来验证代码。理想情况下,我只想使用 ATP 来验证功能合同。C/gcc 或外部软件/包/等中是否有任何功能可以实现按合同设计风格的编码?
如果不是,那只是我自己开始的动力。
我对此的参考可能是来自 MSR 的 Spec# 或 Sing#,但我是一名开源人员,我正在寻找开源解决方案。
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,消息消失!
.net - .NET 4.0 的合同设计与 Eiffel 相比如何?
我有“高兴”在大学里由 Bertrand Meyer 本人教授 Eiffel,并且刚刚读到 .NET 4.0 将包括合同设计。
任何有见识的人都可以详细说明与 Eiffel 现有功能集相比它的强大程度吗?
是否支持接口合同?
.net - Microsoft 合同:程序集加载导致元数据导入警告
我正在尝试了解Microsoft Code Contracts库的方法,并且我具有以下简单功能:
尝试编译时,contracts 静态编译器会抛出以下警告消息:
然后立即放弃(并且不尝试进行任何进一步的合同处理)。如果我删除设置的代码,DefaultToolsVersion
则合同验证程序可以正常工作,但这毫无意义,因为它会导致代码不正确。
我在谷歌上找不到任何提及...有什么方法可以解决这个问题,还是只是合同库中的一个错误?(诚然,它处于预发布状态)
谢谢