2011-04-02 66 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