安卓分离包

3

我有一个较大的UI(约20-25个屏幕)。 我该如何组织我的代码? 应该按功能将其分为不同的包吗? 是否应该有一个包含所有UI类的包,然后创建子包进行组织? 还是不要创建单独的包,而是组织成文件夹。 任何帮助都将不胜感激。

2个回答

8

当你创建文件夹时,它就变成了一个包。我个人喜欢将大型项目的结构组织如下:

  • 用户界面(UI)
  • 核心/逻辑(Core / Logic)
  • 数据访问对象/连接(DAO / Connections)
  • 工具(Utils)
  • 模型/传输对象/值对象(Models / TOs / VOs)

希望这对你有所帮助。


每个Activity都需要一个单独的类。如果您是指将类放在不同的包中,那么这几乎是不可察觉的。您根本不用担心这个问题。Java已经改进了这个特定算法超过15年,所以即使对于开发人员来说也是不可感知的。它的好处绝对比这更重要。 - Vicente Plata
好的决策。Google I/O应用程序使用类似的策略,旨在展示最佳实践。 - Ben H

1
我尽可能按逻辑将我的类分为不同的包。
  • activities
  • adapters(大多用于listview的适配器)
  • asynctasks(主要用于与服务器通信)
  • core(包含一个常量类和保存全局变量的基本activity,以及滑动菜单和操作栏)
  • fragments
  • interfaces(大多是listener/observer模式接口,用于通知asynctask或数据库操作的成功/失败)
  • localsqlitedb(包含sqlqueries类、数据库帮助程序类和其他与数据库相关的类)
  • objects - 包含纯Java对象(POJO)代表应用程序中的不同实体(用户、用户的项目、类别)
  • utilities - 图像处理、电子邮件发送、自定义toast制造商等

我认为这种方式组织代码易于维护和重用。

我还使用命名约定,这样我一眼就知道类或文件的作用。

在布局文件夹中:

activity_login.xml
activity_register.xml
dialog_delete_profile_confirmation.xml

在drawable文件夹中:
icon_feed.xml
icon_search.xml
images_loading_splash_screen.png
images_default_avatar.png

在asynctasks包中。
GetUserDataFromServerAsync.class
RegisterUserAsync.class

(这样当我在代码中引用它们时,我知道它不是内部处理程序类,而是与服务器通信的类)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接