项目重构经验一 ——重新规划Android项目的目录结构
2016-11-28 15:07
169 查看
开发两年以来,我做过5个App,这些App的页面少则50多个,多则200多个。有的开发人员喜欢将Activity,Fragment都放在一个Package下,并且没有分类,Adapter也是如此,还有的就是喜欢将Adapter内置在Activity,Fragment里面。这样开发,没有任何分类,显得杂乱无章。每当我看到他们这样写的时候,我看不下去,因为如果想优化哪个功能模块,这些页面是很难找到的,找起来费时费力,大大的降低开发效率,不利于项目的维护和优化。
接下来,我们需要重新规划Android项目的目录结构:(以AndroidFire项目为例)
第一步,项目组件化,模块化。是将整个App的各个业务分离,降低它们之间的耦合度,各个业务线可以由专门的开发同学进行开发,相互之间也不会有干扰,提升开发效率。
这是AndroidFire项目
app模块是整个项目的主模块。common模块是公共业务,包括工具类,自定义view等等。irecyclerview是recyclerview和适配器模块。jcvideaplayer是视频模块。onekeyshareSDK是分享模块。photopicker是图片放大缩小模块,selectordialog是封装的一些dialog模块。这样分模块的好处就是将各个功能独立出来,如果下次要开发新的App,可以直接使用,无需在项目中继续分离,在开发的同时,各个模块可以由专门的开发同学进行开发,相互之间也不会有干扰,节省开发人员的时间和精力,同时也提高了开发效率。
重构后的项目依赖关系
第二步,将App主模块中的类,按照类别划分。
主模块分类
对这各个包的介绍如下:
api:网络封装类和接口管理类。(可以继续分网络模块)
app:放Application
bean:放网络请求,结果回调或者界面传输的实体类,需要序列化。
db:数据库管理类(可以继续分数据库模块)
ui:放Activity,Fragment和Adapter等和界面有关的类,并且按照相应的功能分类(里面的分包,自己研究下)。
utils:一些工具类(可以提取出来放入common中)
widget:一些自定义控件(可以提取出来放入common中)
wxapi:一些和微信相关的类。
具体分包根据具体的业务逻辑划分,命名最好根据业务来命名。
这样划分是为了以下的三个目的:
1)每个文件都是单独的类,不要有嵌套类。
2)将Activity,Fragment按照功能模块划分,这样当需要优化时,可以快速定位到具体页面。
3)按照模块划分,每个开发人员只要负责好自己所开发的模块,这样不会和其他开发同学有业务上的冲突。
使用基类进行子类的统一管理,如BaseActivity,BaseFragment,BaseRecyclerAdapter,BaseView,BaseModel,BasePresenter等等,遵循SOLID原则,单一职责,一个类或者方法只能做一件事。
接下来,我们需要重新规划Android项目的目录结构:(以AndroidFire项目为例)
第一步,项目组件化,模块化。是将整个App的各个业务分离,降低它们之间的耦合度,各个业务线可以由专门的开发同学进行开发,相互之间也不会有干扰,提升开发效率。
这是AndroidFire项目
app模块是整个项目的主模块。common模块是公共业务,包括工具类,自定义view等等。irecyclerview是recyclerview和适配器模块。jcvideaplayer是视频模块。onekeyshareSDK是分享模块。photopicker是图片放大缩小模块,selectordialog是封装的一些dialog模块。这样分模块的好处就是将各个功能独立出来,如果下次要开发新的App,可以直接使用,无需在项目中继续分离,在开发的同时,各个模块可以由专门的开发同学进行开发,相互之间也不会有干扰,节省开发人员的时间和精力,同时也提高了开发效率。
重构后的项目依赖关系
第二步,将App主模块中的类,按照类别划分。
主模块分类
对这各个包的介绍如下:
api:网络封装类和接口管理类。(可以继续分网络模块)
app:放Application
bean:放网络请求,结果回调或者界面传输的实体类,需要序列化。
db:数据库管理类(可以继续分数据库模块)
ui:放Activity,Fragment和Adapter等和界面有关的类,并且按照相应的功能分类(里面的分包,自己研究下)。
utils:一些工具类(可以提取出来放入common中)
widget:一些自定义控件(可以提取出来放入common中)
wxapi:一些和微信相关的类。
具体分包根据具体的业务逻辑划分,命名最好根据业务来命名。
这样划分是为了以下的三个目的:
1)每个文件都是单独的类,不要有嵌套类。
2)将Activity,Fragment按照功能模块划分,这样当需要优化时,可以快速定位到具体页面。
3)按照模块划分,每个开发人员只要负责好自己所开发的模块,这样不会和其他开发同学有业务上的冲突。
使用基类进行子类的统一管理,如BaseActivity,BaseFragment,BaseRecyclerAdapter,BaseView,BaseModel,BasePresenter等等,遵循SOLID原则,单一职责,一个类或者方法只能做一件事。
相关文章推荐
- 重新规划Android项目的目录结构
- Android 重新规划项目结构
- Android 开发之旅:HelloWorld项目的目录结构
- 使用Ant进行项目构建之二:规划我们的项目目录结构 (转载)
- Android开发项目中文件目录结构
- Android项目的目录结构
- Android开发之旅:HelloWorld项目的目录结构
- Android开发之旅:HelloWorld项目的目录结构
- 解决新建的Android项目gen目录下没有R.java文件--Android开发经验
- android开发学习笔记(8)Android项目目录结构:
- Android开发之旅:HelloWorld项目的目录结构
- Android项目目录结构
- Android学习笔记 -- Android项目的目录结构
- Android开发之旅:HelloWorld项目的目录结构
- 重新规划了一下日志的目录结构
- Android笔记(1) HelloAndroid以及Android项目目录结构
- Eclipse中Android项目的目录结构
- 传智播客-Android(1)-环境准备和Android项目目录结构分析
- Android项目目录结构剖析
- Android开发之旅:HelloWorld项目的目录结构