DBC(契约式设计)和AOP(面向方面编程)

本文关键字:方面 编程 AOP DBC 契约 | 更新日期: 2023-09-27 17:50:27

我正在阅读《实用主义程序员》,在关于DBC的章节中,他们讨论了Effel如何强制DBC前置和后置条件,而Java, c#, c++则没有。我想到的第一件事就是使用AOP(所以我谷歌了一下它是DBC, AOP只出现了旧的链接)

那么在Java或c#中使用AOP来增强DBC的其他程序有什么想法呢?

DBC(契约式设计)和AOP(面向方面编程)

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

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

执行契约的方面需要在产品代码中运行,这实际上有引入错误的风险,而不是阻止它们。

方面不提供任何编译时安全性,而这正是DBC的主要目的。

我不了解c#,但在java领域似乎没有成熟的DBC选项可用。因此,我倾向于将契约作为测试来实现。虽然不像我应该的那么频繁

c#(实际上是。net)使用代码契约框架和工具支持DBC。

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

看看Contract4j,它使用AspectJ来增强DBC。