重新规划Android项目的目录结构

来源:互联网 发布:遥感影像处理 知乎 编辑:程序博客网 时间:2024/06/05 00:18
    有的开发人员喜欢将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原则,单一职责,一个类或者方法只能做一件事。

原创粉丝点击