在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

彻底搞懂Redis事务机制

程序员花卷

缓存 分布式数据库 后端 事务 redis 精讲

Windows 10 上的代理设置

Geek_bf375d

爬虫 https IP 代理IP 代理IP设置

Spring Boot 外部化配置的应用

玄兴梦影

如何为 Windows 8.1 设置代理

Geek_bf375d

爬虫 代理IP 代理IP设置 免费代理ip 跨境电商

一种LED驱动专用控制电路方案

芯动大师

使用极限网关助力 ES 集群无缝升级、迁移上/下云

极限实验室

console Gateway 数据迁移 极限网关 极限科技

当我遇见腾讯混元大模型|社区征文

法医

大模型

2023年度盘点:10款好用的AI图片生成工具推荐!总有一款是你的菜。

彭宏豪95

人工智能 设计 在线白板 AIGC AI绘画

Linux的代理设置

Geek_bf375d

爬虫 代理IP 代理IP设置 跨境电商 HTTPS协议

微服务常用的组件与相关问题

想要飞的猪

Windows 7 上配置代理服务器

Geek_bf375d

爬虫 https IP 代理IP 代理IP设置

INFINI Labs 产品更新 | 修复 Easysearch 跨集群复制索引同步问题,Gateway 内存异常增长等问题

极限实验室

Gateway 产品更新 easysearch 极限科技

我在平台与 AIGC 的交互组件一些设计经验

大东(AIP智能体运营专员)

【云原生 | 最佳实践】一个实践驱动的云原生项目集—KubeWharf

计算机魔术师

字节跳动 云原生

ZK的数据结构以及协议

想要飞的猪

Logii 指纹浏览器中如何设置代理

Geek_bf375d

爬虫 https IP 代理IP 代理IP设置

《三国杀》完成鸿蒙原生应用开发,更多游戏品类加入鸿蒙生态

最新动态

Java互联网+医院智能导诊系统源码 自动兼容H5小程序、Uniapp

源码星辰

Java 源码 智慧导诊 智能导诊

如何设置和使用 Proxifier教程

Geek_bf375d

爬虫 https IP 代理IP 代理IP设置

关于VO/DTO/DO/PO价值的思考

Nacol

Java 设计模式 架构设计 架构师

企业数字化转型,如何战略性的使用数据和 IT ?

飞算JavaAI开发助手

如何在 PS4 中添加IP代理

Geek_bf375d

爬虫 https 代理IP 代理IP设置 跨境电商

AI大模型驶向产业之海,需要高质数据“河道”引航

脑极体

存储

spring中的设计模式

想要飞的猪

如何在VMMask指纹浏览器中设置代理

Geek_bf375d

爬虫 https IP 跨境电商 TikTok

如何在没有 Root 权限的 Android 上设置IP代理

Geek_bf375d

爬虫 https 代理IP 代理IP设置 跨境电商

iOS 的IP代理设置

Geek_bf375d

爬虫 https IP 代理IP 代理IP设置

Android 上的代理设置

Geek_bf375d

爬虫 代理IP 代理IP设置 跨境支付 HTTPS协议

Windows 11 的代理设置:启用和禁用

Geek_bf375d

爬虫 IP 代理IP 代理IP设置 HTTPS协议

SQL 算术运算符:加法、减法、乘法、除法和取模的用法

小万哥

MySQL 数据库 程序员 sql 后端开发

文心一言 VS 讯飞星火 VS chatgpt (147)-- 算法导论12.2 2题

福大大架构师每日一题

福大大架构师每日一题

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