写点什么

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

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

关注

评论

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

ElasticSearch - 批量更新bulk死锁问题排查 | 京东云技术团队

京东科技开发者

elasticsearch MQ 企业号 7 月 PK 榜 BulkProcessor

文盘Rust -- FFI 浅尝 | 京东云技术团队

京东科技开发者

rust C语言 企业号 7 月 PK 榜 FFI

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

袋鼠云数栈

sql flink 实时开发

使用 Navicat 的数据生成插入大量测试数据

hungxy

美团面试真题和答案

王磊

java面试

解决ueditor表格拖拽没反应的问题

互联网工科生

数据库 Vue

为什么越来越多的网站选择海外主机跨越国界?

一只扑棱蛾子

海外主机

基于Web的智慧交通3D可视化系统

2D3D前端可视化开发

智慧交通 智慧交通系统 智能运输系统 ITS 智慧公交

人脸识别技术的精度提高及其应用

数据堂

【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

京东科技开发者

openai 数据交互 企业号 7 月 PK 榜 Function Calling

人脸识别技术在智能家居中的应用

数据堂

软件测试/测试开发丨Python闭包函数和计时器学习笔记

测试人

Python 程序员 软件测试 函数

如何用 TDengine 预测 “未来”

爱倒腾的程序员

涛思数据 tdengine 时序数据库

[杂谈] 从PDF文件中进行表格抽取(tabula || paddle-pp-structure)

alexgaoyh

paddle 版式还原 表格提取 tabula pp-structure

国内数据库第一梯队!柏睿数据RapidsDB通过“可信数据库”评测

新消费日报

手把手教你如何做手机PCB电磁兼容性设计

华秋PCB

电磁 PCB 电路板 电子 PCB设计

生成式AI下的企业:是不是该成立新部门封新官了?

FinClip

SpringBoot 3.0来了,你准备好了吗? | 社区征文

bug菌

后端 年中技术盘点

华为云GaussDB圈层活动走进香港,赋能金融政企数字化转型

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

超燃!用友大易走进晨光,探索人才管理创新之道

用友BIP

招聘

人脸识别技术的安全性和隐私保护

数据堂

制造业用哪款堡垒机好一点?为什么?

行云管家

网络安全 堡垒机 双因子认证 制造业

数智驱动 百业共荣!亚信科技精彩亮相2023 MWC上海展

亚信AntDB数据库

数据库 AntDB AntDB数据库

5G与妈祖守护的那片海

脑极体

5G

什么是GPU与CPU?有什么不同?哪个更好?

Finovy Cloud

Spring Loaded代码热更新实践和原理分析 | 京东云技术团队

京东科技开发者

spring 热更新 Loader 企业号 7 月 PK 榜

山西等级保护测评机构有哪些?有几家?

行云管家

信息安全 等级保护 等保测评 等级测评 山西

分享实录 | NGINX 网络协议优化(下)

NGINX开源社区

nginx TCP TLS HTTP

从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

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