2011-04-19 70 views
1

我正在阅读Pragmatic Programer和DBC讨论Abbe Effel如何强制执行DBC前后条件和Java,C#,C++。首先想到的第一件事就是使用AOP(所以我使用DBC和AOP只有旧的链接出现)DBC(按合同设计)和AOP(面向方面​​编程)

那么还有什么其他的程序想法使用AOP来强制DBC在Java或C#中?

回答

1

看看Contract4j它使用AspectJ强制DBC。

+0

我不是真的找libery更多的想法上是不能出来住它,它便无法使用。开发者体验! – kalvis 2011-04-19 08:08:25

3

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

方面需要特别复杂的基础设施构建过程

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

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

不知道C#但它似乎并不是java land中可用的成熟DBC选项。所以我倾向于将合同作为测试来实施。尽管不如我应该那样经常

+1

实际上DBC可以在运行时或编译时执行。在编译时,它变得非常棘手,因为你可能需要一个完备的定理证明和一个人类数学家的协助来证明合同满足。所以,虽然我自己不使用AOP,但我确实认为这是运行时DBC强制执行的有效方法。但我不确定额外的复杂性是否值得。 – 2011-04-19 08:13:15

2

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

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

该框架是内置于.NET框架4