AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

java版gRPC实战之六:客户端动态获取服务端地址

程序员欣宸

gRPC grpc双向流

面试突击35:如何判断线程池已经执行完所有任务了?

王磊

Java java面试

亚马逊云科技创新大会 | 云基础架构

亚马逊云科技 (Amazon Web Services)

架构

java培训-JVM内存分配面试题分享

@零度

JVM JAVA开发

web前端培训-MySQL的索引下推解析

@零度

MySQL 前端开发

JavaScript数组,看这篇就ok了!

坚果

3月月更

求职有 Pulsar | 中国联通、StreamNative 多个热招岗位

Apache Pulsar

开源 云原生 代码 Apache Pulsar 岗位招聘

100行代码实现HarmonyOS“画图”应用,eTS开发走起!

HarmonyOS开发者

HarmonyOS ETS ArKUI 3.0

得物技术登录组件重构

得物技术

重构 用户增长 增长 组件 用户登录

java版gRPC实战之三:服务端流

程序员欣宸

gRPC

TDengine 助力国产芯片打造“梦芯解算”,监测地质灾害 24 小时无间断

TDengine

数据库 tdengine 物联网

一个服务器轻松存储上亿数据,TDengine 在北京智能建筑边缘存储的应用

TDengine

数据库 tdengine 物联网

大数据培训Flink 源码解析Async IO

@零度

flink 大数据开发

2.7万只!当前及未来仍将是量化交易的黄金期

非凸科技

rust 招聘 机器学习算法 算法交易

《LeetCode刷题报告》题解内容 Ⅲ

謓泽

3月月更

java版gRPC实战之二:服务发布和调用

程序员欣宸

Java gRPC

开放报名丨《音视频社交新风口》线上峰会,聚焦海外社交生态升级

融云 RongCloud

java版gRPC实战之四:客户端流

程序员欣宸

gRPC grpc双向流

java版gRPC实战之五:双向流

程序员欣宸

gRPC grpc双向流

基于服务网格的分布式 ESB, 实现应用无关的传统 ESB 转型升级

BoCloud博云

微服务 ESB

Linux下TCP网络编程-创建服务器与客户端

DS小龙哥

3月月更

TiDB 在携程 | 实时标签处理平台优化实践

PingCAP

学习编程是最好的复利方式

FunTester

FunTester

从 OpenTSDB 到 TDengine,至数物联网平台技术改造之路

TDengine

数据库 tdengine 物联网

云效持续交付流水线,免费还好用!

阿里云云效

云计算 阿里云 持续集成 持续交付 持续交付流水线

大数据自动管理,24 小时服务无间断,StarRocks 如何做到?

StarRocks

大数据 数据分析 StarRocks

生产环境频繁内存溢出,原来就是因为这个“String类”

华为云开发者联盟

jdk JVM 内存 字符串 String类

java版gRPC实战之七:基于eureka的注册发现

程序员欣宸

gRPC 注册中心 eureak

架构实战营-模块一-作业

CityAnimal

架构实战营 #架构实战营 「架构实战营」

《2022网络威胁形势研究报告》重磅发布 | 附下载

青藤云安全

如何判断线程池已经执行完所有任务了?

CRMEB

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