【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

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

关注

评论

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

面向视频原生,火山引擎视频云与边缘云软硬一体的新云解决方案

火山引擎边缘云

基础设施 边缘计算 云服务 视频 云计算,

Spring Cloud Config

李子捌

微服务 28天写作 12月日更

【AI最前线】精准优质-资讯|分享|热议第44期

百度大脑

人工智能

大势已来,区块链的真正价值是什么?

CECBC

Go+ JSON 编码和解码处理教程(5.4)

liuzhen007

28天写作 12月日更

我们的护城河在哪

hackstoic

商业模式

性能分析之 PHP 应用进程过多导致的 page faults

zuozewei

php 性能测试 性能分析 签约计划第二季

面向 WEB 开发的 Docker(一)

devpoint

Docker 12月日更

Redis(三):持久化

IT巅峰技术

Java redis 架构师 分布式缓存 redis分布式

【C++20协程原理】从Linux线程、线程与异步编程、协程与异步,一文带你弄清楚

奔着腾讯去

线程 多线程 进程 协程 C++20

持续写作的动力

张老蔫

28天写作

读《刷新》有感

将军-技术演讲力教练

区块链引发了一场独特的社会运动

CECBC

盘点前端进阶之路的零到一

速冻鱼

前端 内容合集 签约计划第二季 12月日更

读《思辨与立场》-03公允无偏

wood

28天写作 批判性思维 思辨与立场

浅谈数据资产

圣迪

数据 数据资产

Apache APISIX 助力便利充电创领者小电,实现云原生方案

API7.ai 技术团队

运维 云原生 物联网 网关 Apache APISIX

面向WEB开发的Docker(二):什么是Docker、镜像、编排?

devpoint

Docker Dockerfile 12月日更

音视频学习--视频特性测试

Fenngton

音视频 测试环境 签约计划第二季

44 K8S之污点与容忍度

穿过生命散发芬芳

k8s 28天写作 12月日更

团队实行996,就有人离职,怎么办?

石云升

996 28天写作 加班文化 职场经验 12月日更

在人均配备升降桌的公司工作,是一种怎样的体验?

LigaAI

开发者 LigaAI

不可错过的年度AI盛会 | 2021 新一代人工智能院士高峰论坛议程重磅发布

OpenI启智社区

人工智能 开源社区 院士峰会 启智开发者大会

阿里云手机正式公测,定义手机全新接入方式

阿里云弹性计算

阿里云 弹性云手机

数据产品经理实战合集

第519区

内容合集 签约计划第二季 技术专题合集

TCP 拥塞控制算法

程序员历小冰

TCP 网络 28天写作 12月日更

一款好用的Java插件 - Lombok

恒生LIGHT云社区

Java lombok

实用机器学习笔记十三:随机梯度下降

打工人!

机器学习 AI 算法 学习笔记 12月日更

贝壳Flutter体系化建设实践

贝壳大前端技术团队

技术专题合集

飞桨企业版重磅发布智能边缘控制台,5分钟零代码自动化模型部署

百度大脑

人工智能 百度

谁在驱动、谁在引领?(14/28)

赵新龙

28天写作

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