【问题标题】:Android project package structureAndroid项目包结构
【发布时间】:2011-07-28 09:45:55
【问题描述】:

我想知道,如何为 Android 应用程序创建灵活的包结构,以便于扩展和管理。我的第一个想法是将每个应用程序组件放在单独的包中,例如:

spk.myapp.main.(主要活动中使用的所有类) spk.myapp.processor.(处理器提供者使用的所有类)

...等等。但是,我不喜欢的方面是,类和包命名约定可能很快与其他完全限定名称不一致,例如提供者权限(在这种情况下,我宁愿将这些命名为 spk.myapp.processor 而不是 spk.myapp.processor.processor 作为类包路径的建议)。

我做了一些研究,但大多数页面都解释了初始项目目录结构,而不是为更大的项目推荐一个。

我的问题可能听起来很傻,但我喜欢从一开始就对我的项目进行排序,这样进一步管理和扩展它们就不会涉及不必要的重构或清理。另外,我在Java方面没有太多经验,我希望从一开始就学习好习惯。

对于 Android 项目,是否有良好且可靠的项目包结构和命名约定?

【问题讨论】:

    标签: android project packages


    【解决方案1】:

    Wikipedia has useful notes 在 Java 包上。包的用处主要有两个原因:

    1. 包为其包含的类型提供唯一的命名空间。
    2. 同一包中的类可以访问彼此的包访问成员。

    第一点意味着您可以按逻辑功能对项目进行分组。活动可以驻留在活动包下,而您的服务可以驻留在服务包下。

    第二点非常重要,但经常被忽视。包访问允许你做一些聪明的事情。例如,您可以拥有一个“构建器”类,它可以构建和填充具有包访问属性的模型,而无需添加大量设置方法或使用公共属性。这可以使对象创建变得非常简单和直观,而对象在包外保持不变。

    可以在 Romain Guy 的 Shelves 应用程序中找到该原则的一个非常好的示例。 BookStore class 可以创建 Book 对象并修改其成员,而无需将这些字段暴露给其他类(在其他包中)。

    【讨论】:

    • 嗯,我考虑过将活动及其类分组到单个包中,而不是对所有活动进行分组。在我看来,两个活动可能在它们的助手类中存在命名冲突。活动和其他应用程序组件也将保存在单独的包中。但是,完全限定的活动类名称将是 - 例如 - spk.myapp.main.Main 或 spk.myapp.additional.Additional,这正是我试图避免的 :) 目前我已经拥有所有组件在小包中 - 因为应用程序很小,但如果它变大了怎么办?
    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 2017-09-23
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多