软件契约
契约式设计把软件组件之间的交互描述成契约,权利与义务得到明确表达和强制实施。契约式
设计还没得到任何主流编程语言的原生支持。但是,有些框架可以让你在常用的语言里使用它,如
Java、Perl、Ruby、JavaScript,当然还有Microso什.NETFramework的语言。在.NET里,你通过.NET
Framework4新增的CodeContracts库创建软件契约。
在软件契约的实现里,不管语法细节如何,每当你写一个类的方法时,你应该确保你能回答以
下问题:
这个方法可以在哪些条件下调用?
方法结束之后哪些条件是经过验证的?
方法执行之前和之后哪些条件没有改变?
这3个条件也被分别成为前置条件、后置条件和不变条件。下面使用.№T的实现一一
Code
Contracts—作为例子深入探讨软件契约。
前置条件
前置条件是指必须验证才能执行方法的布尔条件。通常来说,前置条件会限制输入参数以及暴露该方法的类的当前状态。从概念上来说,前置条件与“如果一那么一抛出”模式一样。
public Macth(string id,string team1,string team2)
{
Contract.Requires<ArgumentException>(id.IsAlphaNumeric(IdLength,IdLength));
Contract.Requires<ArgumentException>(!team1.IsNullOrWhitespace());
Contract.Requires<ArgumentException