2011-09-22 82 views
9

您如何確定包裹名稱應該是什麼以及哪個類別應該放入哪個包裹?如何組織班級,包裹

我工作的一個項目中,我不斷地添加/刪除類和真的不知道,如果我需要一個新的軟件包,還是應該把它添加到一個現有的,即時通訊目前尚未意識到的。

創建新包時,您是否遵循一套規則?

你怎麼知道你是否不重複包的功能?這只是爲了熟悉這個項目。

任何指針讚賞。

+0

@Alex K:我不認爲它是重複的。您所指出的問題是關於如何在Java中使用包,而這個問題是關於如何更有效地定義包。 – helios

+0

@helios可能是你對的 –

回答

11

類應該做的一件事(Single Responsibility Principle)。

類是做相關的東西應該在同一個包。如果你發現你可以更密切地關聯一個包中的某些類,請將它們作爲一個子包!

舉例來說,如果我有這些類項目:

  • GreetingInputWindow
  • GreetingDatabaseObject
  • GreetingDatabaseConnector

我可能只是把他們都在greeting包。如果我想,我可能會把GreetingInputWindow包裝在greeting.ui包中,而另外2個包裝中包含greeting.db

2

我不相信有包裝上的約定任何硬性規定的(雖然我可能是錯的)。通常我把它分解成

com.mycompanyname然後:

  • API
  • 控制器
  • 數據(模型)
  • 作業(cron作業)
  • 報告
  • 的servlet
  • utils的

如果我發現我不適合任何這些的類,然後創建一個新包。

+0

是的,我使用類似的東西。我發現這樣可以保持代碼的組織性,但有些人似乎認爲這不是很好的做法。 –

14

我從一個角度實施過程中的點組織包極力勸阻,像controllersdata,等我更喜歡按功能將它們分組,即,feature1feature2等。如果一個功能是相當複雜的,並且需要大量然後(並且然後)我創建像上面那樣的子包,即feature1.controllers,feature1.data等。

+2

邁克爾667所描述的方法的好處在於,它使得日誌配置變得更容易。例如,如果我想查看與汽車有關的所有信息,我可以在汽車套件中配置日誌記錄 – IcedDante