我是Android开发的新手,所以我对Android项目/代码设计有一些疑问。
我知道这些问题有些主观,但我对其他开发人员如何组织代码感兴趣。谢谢!
答案 0 :(得分:5)
广告包组织 - 我为Android开发了大约两年的应用程序,我和Andrea Cinesi编写的内容类似。但本周我开始考虑将包装作为应用程序模块更合适,例如:
com.example.android
.car
CarActivity
CarListFragment
CarDetailFragment
CarListAdapter
...
.route
RouteActivity
RouteListFragment
RouteDetailFragment
RouteListAdapter
...
.utils
.services
etc.
我还没有想过两次所有人应该在"模块" (例如数据实体)。但为什么我要考虑这种变化呢?因为在中型或大型项目中,一个软件包中包含非常多的活动/片段/等等 - 这让我感到困惑 - 我特别感谢从其他开发者那里获得的大型项目。
还有一个优点可以分为模块包 - java包 - 私有方法可见性。
我还没有决定是使用这个还是那个变种,但我认为对于较小的项目并不关心,对于中型或大型项目,它可能是更好的选项包作为模块。
答案 1 :(得分:2)
我喜欢在我的Android项目中为每个类分别创建文件,唯一的例外是AsyncTasks。拥有这么多java文件意味着你必须拥有比基础包更多的包。我最终为每种类型的主类提供了一个包。每个类都以其类型命名。
com。示例
活动
包含所有活动。类最后都以Activity命名。这样,您可以在阅读没有完整包名的Java代码时立即知道它是什么。
适配器
包含所有适配器。
认证符
包含与签署用户相关的任何类。我创建一个本地帐户并将所有相关的类放在一起非常方便。
数据
包含与数据管理相关的所有类,如ContentProvider和SQLiteHelper。
data.migrations
包含我的所有SQLite迁移。我为迁移创建了一个类,在这里阅读它,并将它们全部放在这个包中。
片段
包含所有碎片。
助手
包含帮助程序类。帮助程序类是放置在多个位置使用的代码的地方。我有一个DateHelper。大多数方法都是静态的。
接口
包含所有接口。
模型
包含所有本地模型。从HTTP API同步时,我使用Jackson将JSON解析为这些Java对象。我也将Cursor行拉入这些模型中。
偏好
包含自定义首选项的所有类。创建首选项时,我需要自定义PreferenceDialog以及自定义PreferenceCategory。他们住在这里。
同步
包含与同步相关的所有类。我使用SyncAdapter从HTTP API中提取数据。除了SyncAdapter之外,还需要SyncService,因此我创建了一个包。