2011-04-19 64 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