2009-12-09 50 views

回答

12

國際海事組織,這是一件壞事,雖然在可維護性方面不是真正的表演障礙。

缺點是它使得類更難找到,並且它使包名更加冗長。前者在不使用IDE時應用更多。

有人可能會認爲它與「封裝私人」範圍一起有助於模塊化。但是相反,你也可以爭辯說,過度包裝實際上是相反的;即強迫你使用public,如果你不那麼細緻/迂腐,你就不必這樣做。

5

這當然是主觀的,但我通常更喜歡用他們至少包含3-4班但不超過13-15的方式來決定我的包裹。它讓理解變得更好,同時不會混淆項目。儘管如此,對於其他人可能會有所不同。 如果一個包裝增長超過13-15個班級,一個子包裝要求出現。

6

我認爲細粒度的包裝結構是件好事。主要原因是它可以幫助減少你的依賴。但要小心......如果你把事物分解得太多而實際上屬於一起,那麼你最終會得到循環依賴!作爲一個經驗法則,我通常在包中有一個接口(或一組相關的接口)。在子包中,我將實現這些接口(而不是將所有實現都放在同一個包中)。這樣一個客戶端可以僅僅依賴於感興趣的接口和實現...而不是所有其他他們不需要的東西。

希望這會有所幫助。

8

最終在一個特定包中的實際數量類型並不重要。這是你如何到達你的包裝結構。 (「什麼」而不是「如何」,本質上是「公共」API),耦合(包對其他包的依賴程度)和內聚性(如何相互關聯是一個包中的功能)更重要。

包裝設計(大部分來自Uncle Bob)的一些準則,例如:

  • 軟件包應該形成可重複使用和釋放模塊
  • 包裝應側重於良好的可重用性
  • 避免包
  • 之間循環依賴
  • 軟件包應該僅僅取決於變化較少的軟件包
  • 軟件包的抽象應該在proportio中n以及其變化的頻率

不要試圖從頭開始充實整個包結構(您並不需要它)。相反,讓它經常進化並重構。查看Java源代碼的import部分,以獲取有關移動類型的靈感。不要被僅包含一個或幾個類型的包分散注意力。

0

從頭開始編寫程序時,我的方法是開始根包(com.example.app1)中的所有類。當有一定數量的相關類別「做一件事情」是創建一個包的時候。經過一段時間的開發後,輔助類可以轉到通用包(例如com.example.app1.misc,com.example.app1.utils)以卸載根包。

所以我儘量保持清潔的根包。

細粒並不差,但正如其他人所說,經常重構會產生緊湊的包裝結構。

2

包是一個封裝單元。

理想情況下,它通過接口公開一個公共API並隱藏包私有類中的實現細節。

包的大小因此是實現公共API所需的類的數量。

2

還有一個神奇的數字7 +/- 2.在生理範圍內,已經表明這是我們理解一組給定事物的基本限制。在我們的大腦需要開始交換之前,我們能夠在短時間內保存多少內存和進程。編碼時,我發現這並不是一個糟糕的經驗法則,也就是說,一旦一個軟件包開始超過10個課程,現在是認真思考如何分解它的時候,但是低於5個軟件包是不值得的。也適用於菜單組織等事情。請參閱Millers paper或Google。

相關問題