我正在阅读The Pragmatic Programer以及关于DBC其他部分关于Effel如何强制执行DBC前后条件和Java,C#,C ++的内容。 首先想到的是使用AOP(所以我用谷歌搜索DBC和AOP只有旧的链接出现了)
那么使用AOP在Java或C#中强制使用DBC的其他程序思想是什么呢?
答案 0 :(得分:3)
虽然我喜欢DBC的想法,但在我看来,AOP是这项任务的错误武器。
方面需要特殊的基础架构使构建过程复杂化
执行合同的方面需要在生产代码中运行,存在实际引入错误而不是阻止它们的风险。
方面不提供任何编译时安全性,这实际上是DBC的主要目标。
不了解C#,但似乎并不是java版本中可用的成熟DBC选项。因此,我倾向于将合同作为测试来实施。虽然不像我应该那样频繁
答案 1 :(得分:2)
C#(实际上是.NET)使用Code Contracts框架和工具支持DBC。
它提供了一个API,用于声明前置,后置和不变条件,以及执行运行时检查,静态检查和生成文档的能力。
该框架内置于.NET framework 4中。
答案 2 :(得分:1)
查看使用AspectJ强制执行DBC的Contract4j。