DBC(按合同设计)和AOP(面向方面​​编程)

时间:2011-04-19 07:56:50

标签: c# java programming-languages aop

我正在阅读The Pragmatic Programer以及关于DBC其他部分关于Effel如何强制执行DBC前后条件和Java,C#,C ++的内容。 首先想到的是使用AOP(所以我用谷歌搜索DBC和AOP只有旧的链接出现了)

那么使用AOP在Java或C#中强制使用DBC的其他程序思想是什么呢?

3 个答案:

答案 0 :(得分:3)

虽然我喜欢DBC的想法,但在我看来,AOP是这项任务的错误武器。

方面需要特殊的基础架构使构建过程复杂化

执行合同的方面需要在生产代码中运行,存在实际引入错误而不是阻止它们的风险。

方面不提供任何编译时安全性,这实际上是DBC的主要目标。

不了解C#,但似乎并不是java版本中可用的成熟DBC选项。因此,我倾向于将合同作为测试来实施。虽然不像我应该那样频繁

答案 1 :(得分:2)

C#(实际上是.NET)使用Code Contracts框架和工具支持DBC。

它提供了一个API,用于声明前置,后置和不变条件,以及执行运行时检查,静态检查和生成文档的能力。

该框架内置于.NET framework 4中。

答案 2 :(得分:1)

查看使用AspectJ强制执行DBC的Contract4j