项目组件化

100 阅读2分钟

最近参与了APP组件化工作,这里将我这个菜鸟的一点个人经验简单总结下

  1. 为何要做组件化

一个大型项目动辄几十上百人开发维护,随着经年累月的开发,不可避免地会出现很多不符合设计原则的代码结构以及耦合。组件化的目的就是将一个杂乱无章的项目代码抽丝剥茧,将一些通用的代码模块化出来,将一整个main组件的代码拆分成多个下沉的组件。

  1. 基本思路

六大设计原则:

  • 单一职责原则(Single Responsibility Principle);
  • 开闭原则(Open Closed Principle);
  • 里氏替换原则(Liskov Substitution Principle);
  • 迪米特法则(Law of Demeter),又叫“最少知道法则”;
  • 接口隔离原则(Interface Segregation Principle);
  • 依赖倒置原则(Dependence Inversion Principle)。
  1. 什么应该下沉?

  • 通用的工具类/工具方法
  • 通用的配置开关、数据仓库、常量
  • 算法库以及算法接口
  • 通用的流程(如Camera基本流程)

注意:上述分类强调“通用”,如果是业务强相关的逻辑以及配置,建议直接跟随业务模块存放

  1. 如何下沉

工具模块很容易下沉,实践中的难点主要是错综复杂的耦合关系

  • 步步为营。先拆解没有耦合、耦合较少的部分,如工具模块,常量模块

  • 熟练运用设计模式。如通过代理模式暂时或持续解耦(暂时解耦的原因是:阶段性拆解任务需要依赖main组件。如果完成整体的组件化工作后,可以解除耦合,则可以恢复持有某些对象)

  • 当断则断。业务相关的逻辑,果断踢出来存放在业务模块中

  1. 拆解技巧

  • 运用IDE的move功能移动类、常量等。不仅能自动更新依赖关系,还能保留Git记录
  • 包名、类名适当保持一致。如果包名路径和拆解前一致,依赖处则不需要变更import包名,如果存在大量的依赖,拆解后也不会有大量的文件修改记录
  • 准备2个相同的项目,对照拆解