然后,基于契约的编程仅仅是一个思想,尚未形成产品,在zero语言设计中,对契约编程已经能够提供良好的支持。
契约有两个层次,一个层次是声明式的,即,程序员在写作代码时的规范,例如x!=null,这样的契约,从定义的角度上来看,不允许定义一个没有初始值
的指针变量。由于Zero语言对模版中填空的约束已经有一套说明规范,在引入这个契约之后,程序员就无法写出一个不赋予初始值的指针变量定义语句。
另一个层次是过程式的,即,可以定义出这样一个契约,在引用x之前,x不能是一个空指针,这个契约可以被认为是一个AOP定义,其作用是,将对x的检查
放到任意的,对x进行引用的操作之前,而Zero语言,对AOP也有了良好的支持。
所以,在Zero语言中引入契约编程,也就成了一件水到渠成的事情。