写点什么

.NET 代码契约组件目前已经提供下载

  • 2009-02-25
  • 本文字数:699 字

    阅读完需:约 2 分钟

代码契约(Code Contracts)是“契约式设计”的.NET 实现。按照原计划它将与.NET 4.0 一起发布,不过现在开发人员已经可以从DevLab 上下载这个组件了。“契约”为API 的使用增加了限制和更多验证,编程因此变得更为安全,并可有效避免在运行中出现意料之外的错误。

契约式设计(或“契约式编程”)并不是编程领域的新概念,许多语言中已经有类似的实现了。代码契约为.NET 引入了这种编程范式。简单地说,它在委托方(调用者)和提供方(被访问的API)两者之间建立一个契约,在遵守契约规范的情况下,委托方则更有把握从提供方那里获得预期的结果,而提供方也对委托方发起正确的调用有了更多信心。

目前代码契约组件中包含三种契约条件:前置条件(pre-conditions)、对象不变量(object invariants)、及后置条件(post-conditions)。前置条件可检查构造函数或方法的调用是否得到了正确的参数。后置条件则用于检验返回值的合法性。对象不变量则将特定条件运用于对象的状态上,确保其不会拥有非法的值。

这听起来与单元测试很相像,不过它意味着现在已经可以在构建期间执行这些验证了。编译器会根据契约来检查代码是否满足了所有的条件,并在出现状况时发出警告。这样程序员就可以立即得知条件是否得到满足,并在运行代码之前进行一定调整。

目前DevLabs 的工作还包括从契约中生成项目文档。任何人阅读了某个API 的文档之后就能了解它所有的契约条件。

使用代码契约能够得到更好、更安全的代码,并为外部API 提供合适的使用指导,最终有助于开发出更高质量的软件。

有用的链接:代码契约在线文档微软研究院的代码契约网站相关论坛

查看英文原文: Code Contracts for .NET Is Available for Download

2009-02-25 10:071977
用户头像

发布了 157 篇内容, 共 54.3 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

一文搞懂 FlinkSQL 的 KafkaSource

shengjk1

flink flink源码 flink sql

FlinkSQL 平台

shengjk1

flink flink sql flink sql 平台

Flink 计算 TopN

shengjk1

flink flink 实战 flink topN

阿里一战封神,百万人跪求的Java面试手册终于开源;

Java架构师迁哥

Python-计算机视觉-OpenCV-调色板

Aldeo

Python OpenCV

已拿到蚂蚁金服Offer!阿里内部二十三万字Java面试题总结

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

Python OpenCV 图像处理二值化,取经之旅第 7 天

梦想橡皮擦

3月日更

JVM G1GC的算法与实现

Yano

Java JVM GC G1GC

Flink 提交作业运行的各种模式总结

shengjk1

flink flink 执行

硬件工程师必备,常用元器件封装速查表

不脱发的程序猿

28天写作 电路设计 3月日更 元器件封装速查表 电子设计

一文搞懂Flink SQL执行过程

shengjk1

flink flink源码 flink sql flink sql 执行过程

超全Android中高级面试复习大纲,在线面试指南

欢喜学安卓

android 程序员 面试 移动开发

万众瞩目的EGG Network,备受期待的New-DeFi自治共识论坛在海口闭幕

币圈那点事

区块链

快速使用Vue3最新的15个常用API(1W5+字详解,建议收藏)

零一

vue.js 大前端 Vue3

寻找被遗忘的勇气(二十三)

Changing Lin

3月日更

Flink 计算 PV UV

shengjk1

flink flink 实战

【LeetCode】扁平化嵌套列表迭代器Java题解

Albert

算法 LeetCode 3月日更

Swift 5创建和使用Framework, XCFramework 从入门到精通 John 易筋 ARTS 打卡 Week 42

John(易筋)

ARTS 打卡计划 Framework XCFramework

SDK介绍及相关功能测试

行者AI

测试 sdk

4层板到12层板叠层经典设计方案

不脱发的程序猿

28天写作 电路设计 3月日更 PCB PCB布局

Redis新版本开始引入多线程,谈谈你的看法?

Java架构师迁哥

一文搞懂 FlinkSQL函数 LAST_VALUE 的原理

shengjk1

flink flink sql flink 源码

图解TCP的通信机制

零一

TCP 网络

如何在3分钟内实现音频变声和趣味音效?

拍乐云Pano

音视频 RTC 出海社交 社交泛娱乐

SQLServer性能调优方法小结

嘉为蓝鲸

数据库 sql 运维 SqlServer MAXDOP

想学IT的必看!漫谈MySQL权限安全,分享一点面试小经验

欢喜学安卓

android 程序员 面试 移动开发

java deep vs shallow copies

shengjk1

Java deep copy shallow cop

一文搞懂 Flink 中的锁

shengjk1

flink flink 锁

Dubbo的设计理念原来就藏在这三张图中

中间件兴趣圈

dubbo RPC

到底什么是Event Loop?那就来了解一下JavaScript分别在浏览器和Node环境下的运行机制吧

零一

JavaScript 大前端

使用Redis,你必须知道的21个注意要点

Java 数据库 redis 架构 面试

.NET代码契约组件目前已经提供下载_.NET_Abel Avram_InfoQ精选文章