2014-09-19 22 views
2

Bob大叔的OOD的原則(http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod)描述:我們是否可以將REP,CRP,CCP等原則應用於Java包和JAR?

  • 類設計的五個原則
  • 包裝設計的六項原則(該版本重用等價原則,共同封閉原則等)

該文章指出:

在這種情況下一個包是像一個.jar FIL二進制交付e或dll,而不是像Java包或C++名稱空間這樣的名稱空間。

這是否意味着6「包原則」適用於Java包(此時用關鍵字定義)?這是否意味着以這種方式應用它們是錯誤的?如果是這樣,你能指出哪裏可以找到這樣的命名空間包原則?

+3

它告訴你,文檔中使用的術語'package'與java包(根據關鍵字)無關。至於第二個重點;我實際上並不知道你在問什麼。 [Wikipedia entry for Namespace](http://en.wikipedia.org/wiki/Namespace)在非編程語境中對它進行了解釋。有很多好的做法,但是本身沒有*原則*。 – Petesh 2014-09-19 12:13:54

+0

問題是還有一篇文章(http://www.objectmentor.com/resources/articles/granularity.pdf)描述了完全相同的六種包裝原則。但它說:在這篇文章中,我們將...把這些更高階的顆粒稱爲「包裝」。 ...「包」一詞在Ada和Java界很常見。在這些語言中,一個包用於表示可以導入到其他程序中的聲明的邏輯分組。所以問題是:**我們可以將REP,CRP,CCP ...原理應用於java NS包以及java歸檔(JAR)**嗎?謝謝 – aillusions 2014-09-19 14:04:28

回答

0

是的,包原則可以應用於單個Java包,或其他語言的類(或其他單一軟件單元)的等效分組。

The first article in Martin's series of articles about package principles, that about the Release Reuse Equivalency Principle,解釋說,原則是關於類的分組。它相當隨意地選擇「包」作爲這些分組的名稱,然後提及在Ada和Java中使用該詞來用於這些語言中的特定類型的分組。我得出結論,這些原則適用於任何分組,包括Java軟件包。

其他人已經成功地將包原則應用於Java包。 JDepend根據Java包的包原則計算度量標準。我仍然錯過了奇妙的工具Optimal Advisor,它在包依賴關係圖上顯示了這些度量標準,以幫助重構。我發現它們都可用於識別違反包原則的包,並確認何時通過重構來修復這些違規行爲,例如將類移動到適當的包中。

相關問題