我正在读《实用程序员》,一节一节地谈到了Effel如何实施DBC的前置条件和后置条件,而Java、C#、C++则没有。我想到的第一件事就是使用AOP (所以我在谷歌上搜索了DBC和AOP,只有旧的链接出现了)
那么,对于在Java或C#中使用面向方面编程来增强DBC语言,程序员还有什么想法呢?
发布于 2011-04-19 16:05:58
虽然我喜欢DBC的想法,但在我看来,AOP不是这个任务的武器。
方面需要特殊的基础设施使构建过程复杂化。
执行契约的方面需要在生产代码中运行,存在实际引入错误而不是阻止错误的风险。
方面不提供任何编译时安全性,这实际上是DBC的主要目标。
我不知道C#,但在java领域似乎还没有成熟的DBC选项。因此,我倾向于将契约作为测试来实现。尽管不像我应该的那样频繁
发布于 2011-04-19 16:39:37
C# (实际上是.NET)使用Code Contracts框架和工具支持DBC。
它提供了一个API,用于声明您的前、后和不变条件,以及执行运行时检查、静态检查和生成文档的能力。
该框架内置于.NET框架4中。
发布于 2011-04-19 16:02:35
看看Contract4j,它使用AspectJ来强制执行DBC。
https://stackoverflow.com/questions/5713273
复制相似问题