注册

模块化时,如何进行模块拆分?

本文内容根据 Android 开发者大会内容整理而得,详见:By Layer or Feature? Why Not Both?! Guide to Android App Modularization


问题



  1. 随着项目的逐步增多,项目中的类文件如何存放、组织逐步变成一个问题;
  2. 在模块化的过程中,如何拆分代码或者拆分代码仓库需要一个指导原则;

image.png


衡量模块化好坏的标准


衡量模块化好坏主要有三个层面:耦合程度、内聚程度以及模块的颗粒度。耦合是衡量模块相互依赖的程度,内聚衡量单个模块的元素在功能上的相关性,颗粒度是指代码模块化的程度。好的模块应做到以下几点:



  1. 低耦合:模块不应该了解其他模块的内部工作原理。 这意味着模块应该尽可能地相互独立,以便对一个模块的更改对其他模块的影响为零或最小。



  1. 高内聚:意味着模块应该仅包含相关性的代码。在一个示例电子书应用程序,将书籍和支付的代码混合在同一个模块中可能是不合适的,因为它们是两个不同的功能领域。




  1. 适中颗粒度:代码量与模块数量有恰当的比例,模块太多会产生一定的开销,模块太少达不到复用的效果。




按照层级(Layer)划分


层级是指 Android 官方架构指南中的三层架构,分别为 UI LayerDomain LayerData Layer



在小型项目中按照 Layer 进行分层是可以满足需求的,随着项目的增大,需要将更多功能拆分到更多的模块中,否则就会出现高耦合和低内聚的情况。


按照特性(Feature)划分


若是按照特性划分,每个模块中会包含相似/相同逻辑(如 Reviews),从而导致代码冗余。



模块间的依赖逻辑耦合严重,不利于独立开发。



同时使用分层和特性划分


可以同时结合分层与特性划分的优势,扬长避短。首先按照特性拆分,在拆分后的这个小的逻辑单元中再按照层级来分,这也是壳工程的一个基本思路。



作者:madroid
链接:https://juejin.cn/post/7160360502885875742
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 个评论

要回复文章请先登录注册