基于契约的编程

4 views
Skip to first unread message

zhang3

unread,
Apr 24, 2009, 6:42:42 AM4/24/09
to Zero programming language
在基于契约的编程中,使用这样的形式对代码进行定义:
Contract.Requires( x ! = null );
这里对x进行了定义上的约束,即x不能为空。

然后,基于契约的编程仅仅是一个思想,尚未形成产品,在zero语言设计中,对契约编程已经能够提供良好的支持。

契约有两个层次,一个层次是声明式的,即,程序员在写作代码时的规范,例如x!=null,这样的契约,从定义的角度上来看,不允许定义一个没有初始值
的指针变量。由于Zero语言对模版中填空的约束已经有一套说明规范,在引入这个契约之后,程序员就无法写出一个不赋予初始值的指针变量定义语句。

另一个层次是过程式的,即,可以定义出这样一个契约,在引用x之前,x不能是一个空指针,这个契约可以被认为是一个AOP定义,其作用是,将对x的检查
放到任意的,对x进行引用的操作之前,而Zero语言,对AOP也有了良好的支持。

所以,在Zero语言中引入契约编程,也就成了一件水到渠成的事情。

Reply all
Reply to author
Forward
0 new messages