2011-07-07 104 views
36

我有關於應用程序包結構的最佳實踐的問題。Android包裝結構最佳實踐

我看着雷託·梅爾的谷歌I/O 2011演示文稿"Android Protips: Advanced Topics for Expert Android Developer的」,看他的博客文章 「A Deep Dive Into Location」,並指出他的應用程序包結構:

COM ... .content_providers
COM ..。 。.receivers
融爲一體......。服務
融爲一體...... .UI 融爲一體...... .UI.fragments
融爲一體...... .utils
融爲一體...... .utils。基地

這是包裝的首選結構嗎?有更好的結構嗎?

+10

真的很喜歡這類問題。也有興趣知道別人怎麼想的那 – barmaley

+0

這不完全相同,但這個問題可能是在更一般的意義上有用http://stackoverflow.com/questions/5525872/android-project-package-structure – derekerdmann

+1

我喜歡這種方式,我也根據它們的類的主要功能來對我的包進行分類。像* .activities - 雖然這是主觀的。 –

回答

6

打包類的主要目標是簡化通過源代碼的導航。這對開源應用程序尤其重要。在我看來,一個易於導航的封裝結構包括以下包:

com.example.main - 包含您的主要驅動功能,如您的主要活動(一個或多個),您的應用程序類(如果有的話),等等

com.example.conf - 包含您的配置文件,如含常量(靜態最終變量)

com.example.net - 網絡相關的類,如那些發出HTTP請求

com.example.util - 實用工具類,如服務,Br oadcastReceivers或其他後臺進程

+1

這是包的目的之一,但不一定是主包的目的之一。另一個是恰當地隱藏關注的領域。例如,您可以使用.ui包中的所有UI代碼,將所有類pkg設爲私有,而不將其暴露給任何其他代碼層。 –

+2

我看到很多以這種方式構建的項目(我認爲即使是Google IO 2012也是如此)。我喜歡我的項目按主題分組(打包):(具有PlayerActivity的com.apps.player,PlayerListView,PlayerListAdapter,具有SyncService,SyncHelper等的com.apps.sync) 我發現代碼更易於瀏覽和理解,辦法。另外,如果我在一個特定的功能上工作,那麼我掌握了所有的課程。 我不明白爲什麼有人把表明他們的功能的類放在他們的名字(例如PlayerActivity)中,放入表明他們的類的函數(例如com.apps.activities)的包中。 – user511