前言
一直都想写一篇关于组件化的文字,详细的把自己这些年的心得梳理出来。
但组件化的内容较多,没办法一口气就把它描述清楚。
因此,打算将组件化划分为两个阶段来进行讲解:组件化心得、组件化实操。
背景
随着需求的持续增加,项目规模不断扩大,协同合作的问题也暴露的越来越多。
- 怎么让多人、多团队并行开发(分工协作是老大难问题)
- 新加入项目的同事快速上手(大项目,总不能让新人先通读整个项目源码再开始工作吧)
- 快速迭代、快速立项(能不能把已有的能力快速应用到新项目中)
- 如何提高打包效率,调试效率
- 跨公司合作时,如何保证源码不泄露
以上这些问题,其实都可以通过对项目组件化的方式来解决。
要聊组件化,按照惯例,就需要先聊聊它的前世今生。
回顾这些年的项目经历,项目的结构设计经历了三个阶段的演进:
- 单一模块
- 模块化
- 组件化
接下来就由我对每个阶段做简单讲解
一、 单一模块
从刚入编程行业开始,相信大家多半都是在这一阶段。不管是hello world项目,还是各自的毕业设计,基本上都是如此。
怎么做
根据MVC模式将项目层级,各个代码根据它所在的层级放置到对应的包目录下
例如:view、control、model、util、bean等。
问题
随着功能越来越多,各个包下的类越来越多,项目可读性,维护性都会越来越差了。
为了缓解这类问题,就在各个层级下进一步按功能拆分为具体的功能包
例如:账户相关、社区、资讯、系统设置等。
总结
总的来说,单一模块的优缺点如下:
优点:上手快
缺点:可读性差、程序员之间相互干扰、不利于模块复用
二、模块化阶段
背景
为了解决单一模块带来的问题,也就是满足多团队协同开发,尽可能降低相互间的影响,同时也为了提高代码的复用性以及复用率。
怎么做
- 按功能划分模块,例如:账户、社区、资讯、系统设置等
- 创建模块的目录结构-module(eclipse叫library)
- 各个模块持续按照适合的设计模式分层,例如MVC、MVP、MVVM等
- 以源码依赖的方式建立各个之间的关联关系
总结
仅需以上简单的几步,模块化就实现了。
虽然看起来简单,但是它已经极大的解决了单一模块的一些痛点。同时它的也有着自己对应的优缺点。
优点:
- 多团队协同开发时,就可以按照模块划分任务,各自负责对应的模块,避免了相互间的干扰
- 其他项目想要复用功能模块,直接链接过去即可
- 各个模块只需要维护自己的配置、依赖等信息,不再像以前一样,大家都在app目录下的配置文件中进行修改了(经常代码冲突)
缺点:
- 模块间强依赖,结构变动可能会影响其他模块
- 模块复用能力不够强,需要手动的递归导入模块依赖的模块
- 项目越来越大,编译时间越来越长
三、结语
组件化还是蛮复杂的,本篇文章只是一个引子,罗列没有组件化时有哪些痛点,为了解决这些痛点,就该组件化上场了,下一篇文章,就会讲解如何组件化
👀关注公众号:Android老皮!!!欢迎大家来找我探讨交流👀