2011-07-07 168 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