【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

谷歌发布安卓应用模块化指南,重点关注代码库增长出现的问题

作者:Diogo Carleto

  • 2022-12-14
    北京
  • 本文字数:1009 字

    阅读完需:约 3 分钟

谷歌发布安卓应用模块化指南,重点关注代码库增长出现的问题

最近,谷歌发布了一份关于安卓应用模块化的指南。该指南旨在为开发人员提供构建多模块安卓应用的最佳实践和模式,重点关注在代码库增长时出现的问题,如可伸缩性、可读性、稳定性和可测试性。

 

在一项关于开发者模块化经验的调查中,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/


相关链接:

你的 Flutter 应用该考虑迁移代码了:Dart 3 将在 2023 年成为 100% 健全的空安全语言

Vue 3 不是最佳选择? 耗时两周从 Vue 2 迁移到 Svelte 后:代码执行更快、体验更佳

2022-12-14 10:316530

评论

发布
暂无评论
发现更多内容

mac上好用的解压缩软件 iFastZip - Extract RAR&ZIP&7Z中文版

mac大玩家j

Mac软件 解压缩软件 解压缩工具

愿意折腾、相信未来的年青人,都在2050

赵新龙

TGO鲲鹏会 2050

软件测试/测试开发丨Selenium Web自动化测试 高级控件交互方法

测试人

Python 程序员 软件测试 自动化测试 selenium

网线,是选圆线还是扁线?什么材质优选?

小齐写代码

总投入超5000万元的开源大赛火热报名中

开放原子开源基金会

开源

汇聚开源力量,赋能软件发展,开放原子开源基金会携开源展区亮相软博会,开源展区现场引关注!

开放原子开源基金会

开源

低代码是什么?看这篇就够了

高端章鱼哥

软件开发 低代码

JetBrains WebStorm v2023.2.1 for Mac(智能javascript语言集成开发环境)

晴雯哥

一文读懂GPU的十个重要参数

Finovy Cloud

gpu GPU服务器 GPU渲染

点对点传输技术在智能交通中的应用:实现车辆间的实时通信

镭速

大文件传输 点对点文件传输

墨迹天气黄耀海:深耕气象技术并与服务场景深度融合,AI全面激活气象服务的跃迁

Geek_2d6073

OpenAI公司说它是“实现通用人工智能最有前途方法之一”

博文视点Broadview

打造次世代分析型数据库(一):CDW PG全面升级

腾讯云大数据

数据库

码了!6个提升程序员软技能与效率的必备工具

这我可不懂

工具 前端工具

小灯塔系列-中小企业数字化转型系列研究——固定资产管理测评报告

向量智库

什么样的家庭条件,现在还招人?

赵新龙

TGO鲲鹏会 招聘

校源行丨2023开放原子校源行开源大使名单

开放原子开源基金会

Databend 开源周报第 109 期

Databend

龙蜥携手平头哥完成算能 SG2042 平台支持,推动 RISC-V 持续向高性能应用演进

OpenAnolis小助手

芯片 risc-v 龙蜥社区 平头哥 2023 RISC-V 中国峰会

RabbitMQ 如何实现延迟队列?

王磊

Java Java面试题

软件测试/测试开发丨Python 数据结构与算法

测试人

Python 程序员 软件测试 测试开发

2023最新大数据传输慢的真正原因与对应解决方案

镭速

大文件传输 大数据传输

Wasm软件生态系统安全分析

OpenHarmony开发者

OpenHarmony

关于低代码这件事儿

互联网工科生

低代码 应用开发 可视化开发

孙文龙理事长参加第二十五届中国国际软件博览会开幕式并发表主题演讲

开放原子开源基金会

Apache Doris 2.0.1 & 1.2.7 版本正式发布!

SelectDB

数据库 大数据 优化 apache 社区

Navicat Premium 16 Mac(多连接数据库管理工具)v16.2.7中文破解版

晴雯哥

dapp开发公司价格

西安链酷科技

区块链 DAPP系统开发

row_number函数的不稳定性

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号9月PK榜

达芬奇DaVinci Resolve Studio 18 for Mac(达芬奇调色软件) 18.5.1中文激活版

mac

达芬奇 苹果mac Windows软件 调色软件

优雅编码!Java与MongoDB的创新数据库架构

树上有只程序猿

Java mongodb 优雅编码

谷歌发布安卓应用模块化指南,重点关注代码库增长出现的问题_语言 & 开发_InfoQ精选文章