-
0 votesanswersviews
是否可以在编译时强制执行Design by Contract检查?
读Design by Contract tutorial我偶然发现了以下几行: 埃菲尔的 Contract 不仅仅是一厢情愿的想法 . 它们可以在运行时在编译选项的控制下进行监视 . 然后解释他们将在失败时抛出异常 . 这让我觉得所有 require ensure invariant all 检查都可以在运行时执行或关闭 . 它是否正确?或者它们可以在编译时使用适当的编译器选项强制... -
116 votesanswersviews
使用断言或例外通过 Contract 设计? [关闭]
在按 Contract 进行编程时,在开始履行职责之前,函数或方法首先检查其先决条件是否得到满足,对吗?执行这些检查的两个最突出的方法是 assert 和 exception . 断言仅在调试模式下失败 . 确保(单元)测试所有单独的 Contract 前提条件以确定它们是否确实失败是至关重要的 .调试和释放模式下 异常失败 . 这样做的好处是,经过测试的调试行为与发布行为相同,但它会导致运行... -
3 votesanswersviews
在 Contract 设计中编译时间检查?
我读过编译器可以在编译时强制执行dbc ..它是如何做到的? -
1 votesanswersviews
Contract 设计:你有一个协议接口吗?
我对 Contract 式设计的概念很陌生,但到目前为止,我很喜欢找到潜在的错误是多么容易 . 但是,我一直在使用Microsoft.Contracts库(非常棒),我遇到了障碍 . 以我正在尝试做的简化示例为例: public enum State { NotReady, Ready } [ContractClass(typeof(IPluginContract))] public inter... -
4 votesanswersviews
如何在编译时强制执行接口 Contract (在C中)?
Background: 我们正在为新的嵌入式系统建模固件 . 目前,固件正在使用UML建模,但不会使用UML建模工具的代码生成功能 . 目标语言为C(C99,具体) . 低功耗(即性能,快速执行)和正确性很重要,但是__70765_,高于其他所有功能,包括代码大小和执行速度 . 在对系统进行建模时,我们已经确定了一组明确定义的组件 . 每个组件都有自己的接口,许多组件与许多组件交互 . 模型中的大... -
4 votesanswersviews
Contract 设计中哪些前提条件合情合理?
假设我们有一个带有以下构造函数的 Student 类: /** Initializes a student instance. * @param matrNr matriculation number (allowed range: 10000 to 99999) * @param firstName first name (at least 3 characters, no white... -
5 votesanswersviews
设计 Contract ,编写测试友好的代码,对象构造和依赖注入将所有最佳实践结合在一起
我一直试图找出编写测试友好代码的最佳实践,但更具体地说是与对象构造相关的实践 . 在蓝皮书中,我们发现我们应该在创建对象时强制执行不变量,以避免我们的实体,值对象等的损坏,考虑到这一点,Design By Contract似乎是避免我们的对象损坏的解决方案,但是当我们遵循这一点,我们最终可能会编写如下代码: class Car { //Constructor public Car(Do... -
3 votesanswersviews
使用隐式构造函数/显式转换运算符在C中按 Contract 设计[关闭]
我最近读过有关按 Contract 设计的内容,我想通过项目尝试使用它 . 当我尝试自己想出一些简单的解决方案时,我想到的第一件事就是这个: #include <iostream> using namespace std; template <typename Type> class Positive { Type value; public: Posi... -
17 votesanswersviews
Swift中的 Contract 式设计
Swift是否提供本地设计 Contract 支持?我知道它可以在运行时通过断言完成,但它可以在编译期间完成吗?或者,是否有任何外部插件/库来执行此操作? EDIT 通过说"during compile time Design by Contract",我不是说图书馆是an all powerful static analyser that C# has . 如果它类似于iCo... -
4 votesanswersviews
在应用“按 Contract 设计”时,存储输入值以检查后置条件是否成立
我经常使用 assertthat 包来检查函数中的后置条件 . 当阅读更多关于 Contract 式设计的想法时,我偶然发现了与输入值相比较的输出检查的想法 . 最简单的例子如下: toggle <- function(x)!x 人们可以立即声明 x == !old_x 必须始终为真 . ( old_x 代表评估前 x 的值 . ) (当然这个例子过于简单,后置条件不会为人类或计算机增加...