2011-04-02 100 views
4

我在想,如何爲Android應用程序創建靈活的包結構,這樣它將很容易擴展和管理。我的第一個想法是把每個應用程序組件在單獨的包中,如:。Android項目包結構

spk.myapp.main(在主要業務使用的所有類) spk.myapp.processor(使用處理器提供者的所有類)

...等等。然而,我不喜歡的一點是,類和包命名約定可能很快與其他完全限定名稱(例如提供者權限)不一致(在這種情況下,我寧願將這些名稱命名爲spk.myapp.processor而不是作爲類包路徑將建議的spk.myapp.processor.processor)。

我已經做了一些研究,但大多數頁面都解釋了最初的項目目錄結構,而不是爲更大的項目建議一個。

我的問題可能聽起來很愚蠢,但我喜歡從一開始就在我的項目中下訂單,以便進一步管理和擴展它們並不涉及不必要的重構或清理。另外,我沒有太多的Java經驗,我希望從一開始就學習好的習慣。

是否有一個良好和可靠的項目包結構和Android項目的命名約定?

回答

5

Wikipedia has useful notes在Java程序包上。軟件包主要用於以下兩個原因:

  1. 軟件包爲其包含的類型提供了唯一的名稱空間。
  2. 同一包中的類可以訪問彼此的包訪問成員。

第一點意味着您可以按邏輯功能對項目進行分組。活動可以位於一個活動包下,而您的服務位於一個服務包下。

第二點是非常重要的,經常被忽視。包訪問允許你做一些聰明的事情。例如,您可以擁有一個「構建器」類,它可以構建和填充具有程序包訪問屬性的模型,而無需添加大量的設置方法或使用公共屬性。這可以使對象的創建非常簡單直觀,而對象在包之外保持不變。

這個原則的一個非常好的例子可以在Romain Guy的Shelves應用程序中找到。 BookStore class可以創建Book對象並修改其成員,而不會將這些字段暴露給其他類(在其他包中)。

+0

好吧,我想過把活動和它的類一起分組到單個包中,而不是分組所有活動。在我看來,這兩個活動可能會在他們的幫手類中命名衝突。活動和其他應用程序組件也將保存在不同的包中。但是,完全限定的活動類名稱應該是 - 例如 - spk.myapp.main.Main或spk.myapp.additional.Additional,這正是我想要避免的:)目前,我已經獲得了所有組件在小包裝中 - 由於應用程序很小,但如果它變得更大? – Spook 2011-04-22 15:25:07