在Android Studio开发中分包的一些建议
引言:
日常开发中一个好的分包能让开发者快速便捷的定位代码、业务,相反,坏的分包会导致维护困难、逻辑不清晰,好的分包应该是看项目目录即能看出代码功能,即见名知意。
常见的分包:
- 功能类
- 业务类
功能类
功能类是指按照Android的一些特有基类分包,即adapter、fragment、activity和后期的mvp分层
常见如下图
| app
|____java
| |__org.daimhim.app
| | http //请求操作类
| | adapter
| | fragment
| | activity
| | db //数据库操作类
| | fragment
| | utils //工具集
| | widget //常见自定义View
| | model //Bean
这样的好处就是职责清晰、从功能层面来说结构一目了然,想创建什么类就在那个包,还提高了代码复用,坏处就是从业务来讲一个界面关联了好几个类,还不在同一个包,看代码时造成一定混乱,对于后期维护、移植也提高了难度。往往移动代码时要从好几个包依次复制容易造成丢失。
业务类
业务类是个人比较推荐的一种分包,它的特点就是一个界面一个包,这个界面的相关类都在一个包中,大大的便利了后期代码维护、功能移植的便利性
常见如下图
| app
|____java
| |__org.daimhim.app
| | http //请求操作类
| |_____ui
| | | home //主页
| | | user //登录页
| | | first //欢迎页
| | db //数据库操作类
| | utils //工具集
| | widget //常见自定义View
| | model //Bean
业务类就是根据业务分包,把每个业务分拆成一个独立的业务模块,我们把widget、utils等这些框架性的类当作Android提供的sdk一样独立出来,业务模块建立在这些sdk之上,做到框架高度复用
一些建议
- adapter、fragment、activity在一个功能就放在一个包下
- 与UI同级的最好都是SDK一样的功能
- model可以放Request、response、Bean
- 界面的dialog也放入相应界面的包中,如果这个dialog多个界面都有使用,可以独立的在UI目录下新建一个包
- 业务分包可以通过类名后缀区分其基本功能
- activity、fragment、adapter的base类可以在UI同级目录创建一个base目录,他们也属于SDK范畴