我对我们的Perl项目中使用DbC的调查,我试图找到验证在源合同(例如,检查前/后置条件,不变量等)的最佳方法
Class :: Contract由Damian Conway编写,现在由C. Garret Goebel维护,但看起来它已经超过8年未被触及.
看起来我想要使用的是Moose,因为它似乎可能提供可用于DbC的功能,但我想知道是否有人有任何资源(文章等)如何去做,或者如果有任何有用的模块,我无法找到.
有人用Perl做DbC吗?我应该"跳进"Moose,看看我能为它做些什么吗?
Moose为你提供了许多工具(如果不是全部糖)来做DbC.具体来说,您可以使用before,after和around方法挂钩(这里是 一些示例)来执行您可能想要对参数和返回值进行的任何断言.
作为"滚动你自己的DbC"的替代方法,你可以使用像MooseX :: Method :: Signatures或MooseX :: Method这样的模块来处理传递给子程序的验证参数.但是,这些模块不处理DbC通常提供的"后"或"不变"验证.
编辑:由于这个问题,我已经将MooseX :: Contract一起攻击并将其上传到CPAN.我很想获得有关API的反馈,因为我从未真正使用过DbC.