最近,谷歌发布了一份关于安卓应用模块化的指南。该指南旨在为开发人员提供构建多模块安卓应用的最佳实践和模式,重点关注在代码库增长时出现的问题,如可伸缩性、可读性、稳定性和可测试性。
在一项关于开发者模块化经验的调查中,54%的参与者表示很难找到关于模块化的学习资料,95%的人表示 developer.android.com 网站上的资料不足够,于是谷歌决定发布一份安卓应用模块化指南。需要注意的是,该指南针对的是中级和高级开发人员,他们通常对推荐的应用架构更为熟悉。
据谷歌称,他们的一些应用已经在使用模块化,如 Play Store、Google News 和 YouTube。
模块化就是将代码库组织成松散耦合的多个部分,这些部分通常叫作模块。每个模块必须是独立的,且有明确的职责。
(图片来自https://developer.android.com/topic/modularization)
模块化带来了许多好处,降低了设计复杂性,让大型系统的维护和演化变得更容易。让我们来看看这些好处:
可重用性——提供了共享代码和使用相同模块构建多个应用的可能性。一个应用由许多模块组成,其中每个模块负责特定的功能。
严格的可见性控制——开发人员可以很容易控制应该向代码库和模块的其他部分公开哪些东西。
自定义交付——Play Feature Delivery允许开发者有条件地或按需交付应用的特定功能。
模块化还有其他好处,例如:
可伸缩性——如果项目进行了适当的模块化,通常会有关注点分离和松散耦合的代码库,从而更容易维护和演变。
所有权——模块可用于加强问责,有专门的所有者负责维护代码、修复 bug、添加测试和评审变更。
封装性——一个模块对其他部分的了解应该尽可能少。独立的代码更容易阅读、理解和演化。
可测试性——测试代码的能力,测试模块比测试大型紧密耦合的系统更容易、更快。
构建时间——与增量构建、构建缓存或并行构建相关,Gradle的一些功能可以利用模块化来提高构建性能。
谷歌在GitHub代码库中提供了多模块应用 Now in Android 的代码,还提供了一个模块化之旅指南,介绍了模块的功能以及它们之间的交互方式。
该指南还有一部分是关于常见模块化模式的,你可以在这部分看到低耦合高内聚、数据模块、特性模块、应用模块、公共模块等等。
原文链接:
https://www.infoq.com/news/2022/11/android-modularization-guide/
相关链接:
评论