InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

.NET代码契约组件目前已经提供下载

作者 Abel Avram 译者 赵劼 发布于 2009年2月25日

领域
架构 & 设计,
语言 & 开发
主题
.NET ,
.NET框架 ,
编程 ,
单元测试 ,
软件测试
标签
设计契约 ,
API

代码契约(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
 

译者 赵劼 网名为老赵,洋名Jeffrey Zhao,写有技术博客“老赵点滴”。关注前沿技术,并致力于开源社区与微软平台的组合优化。

深度内容

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。

Java Remoting远程服务(下)

随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。

深入浅出Node.js(四):Node.js的事件机制

专栏的第四篇文章《Node.js的事件机制》。之前介绍了Node.js的模块机制,本文将深入Node.js的事件部分。

采访和书评:精通HTML5和CSS3设计模式

《精通HTML5和CSS3设计模式》一书记录了目前HTML5应用程序的许多常见设计模式。InfoQ对该书作者之一Dionysios Synodinos进行了采访,谈到了该书以及HTML5应用的相关内容。