写点什么

.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:072409
用户头像

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

关注

评论

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

莱卡、宾利都在用,英特尔oneAPI渲染工具带来高质量视觉体验

E科讯

币期权DAPP 8月28日全球同步耀世上线,掀起币圈追捧热潮

InfoQ_967a83c6d0d7

不得不了解系列之限流

梦朝思夕

限流

分享一个阿里云轻量级开源前端图编排,流程图js组件——butterfly-dag

InfoQ_39ba186c207f

Java 流程图 flow canvas html/css

数据挖掘学习指南(转载)

Jackchang234987

数据挖掘 产品经理

CRM企业到底该不该做PaaS?

ToB行业头条

PaaS SaaS CRM

柔性电子拥有改变地球的能力吗?

脑极体

GitMaster 更新v1.9.0,支持Gitea,Gist拥抱黑暗模式

neo

gitlab tree gitee GitHub、

LeetCode题解:155.最小栈,使用两个栈,详细注释

Lee Chen

大前端 LeetCode

微服务架构下,DLI的部署和运维有何奥秘?

华为云开发者联盟

Docker 大数据 Serverless 数据湖 DLI

MySQL redo与undo日志解析

Simon

MySQL Redo MySQL日志

新金融分布式架构之SOFAStack解决方案

阿里云金融线TAM SRE专家服务团队

oeasy教您玩转linux010106这儿都有啥 ls

o

学习Python真的能找到工作吗?

代码制造者

Python 程序员 编程语言 低代码 零代码

温故知新——Spring AOP(二)

牛初九

spring aop ioc

华为云会议的前世今生

华为云开发者联盟

直播 云服务 华为云 视频编码 视频会议

软件开发丨关于软件重构的灵魂四问

华为云开发者联盟

软件 开发者 软件开发 代码 软件重构

云原生技术采用增加,全球60%后端开发人员都在使用容器 | 趋势分享

BoCloud博云

云计算 容器 云原生 PaaS 博云

GrowingIO AWS 成本优化之路

GrowingIO技术专栏

AWS 成本优化

ShardingSphere简介+实战

云淡风轻

ShardingJDBC

涵盖多场景区块链与政务结合 应用前景广阔

CECBC

区块链 互联网 数字政务

从6大应用场景,看边缘计算落地生根

BoCloud博云

容器 边缘计算 PaaS 云平台 博云

mPaaS 客户端证书错误避坑指南

阿里云金融线TAM SRE专家服务团队

开发者的福音,LR.NET模块化代码生成器

Philips

敏捷开发 快速开发 模块化流程 代码质量 .net core

屏幕共享接入指南

anyRTC开发者

WebRTC 在线教育 直播 RTC

我也没想到 Springboot + Flowable 开发工作流会这么简单

程序员小富

java 14

全民加速节:动态加速在在线教育应用上的最佳实践

阿里云Edge Plus

在线教育 CDN

【写作群星榜】8.15~8.28 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

“全球+”浪潮下,企业出海选择合适的“技术船舶”成关键

华为云开发者联盟

网络 华为云 企业出海 网络加速 宽带

硬核科技:莱克立式吸尘器,引领家居清洁“新态度”

InfoQ_967a83c6d0d7

有为而治:平衡吞噬世界的系统之熵

IT民工大叔

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