包阅导读总结
1. 淘宝短视频流、架构再设计、工程重构、架构解耦、快速迭代
2. 本文讲述淘宝短视频流老工程的架构再设计和工程重构,梳理总结了从定义问题、设计架构、准备工作、重构代码到灰度放量的全过程,并介绍了取得的效果。
3.
– 背景:随着业务发展,老工程问题凸显,开启大型重构。
– 准备:深入了解业务及架构,与业务和技术同学对焦。
– 设计新架构:
– 考虑问题:工程大功能多,基于原工程重构,解决整体耦合。
– 定义核心问题:架构解耦&快速迭代。
– 落地方案:纵向分层+横向模块化。
– 重构前准备:
– 引入代码规范&静态扫描工具。
– 建设工程工具。
– 引入自动化测试。
– 重构代码手段:提取、内联、封装、重命名、移动。
– 架构守护:使用 ArchUnit 检查代码架构。
– 灰度放量:做好数据工作,采用 AABB 方式,监控指标,比对验证。
– 效果:新架构在多方面取得较好效果。
思维导图:
文章地址:https://mp.weixin.qq.com/s/65bnM67NzyAyz5vGU18C8g
文章来源:mp.weixin.qq.com
作者:苏策
发布时间:2024/6/16 6:36
语言:中文
总字数:4904字
预计阅读时间:20分钟
评分:83分
标签:
以下为原文内容
本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com
-
工程大,功能多,可以考虑先基于原工程重构,优先搬移大块的代码,解决整体耦合的问题。最后整体搬移到新工程。
-
功能自动化测试:测试同学编写的测试脚本,验证业务的各种功能。
-
稳定性自动化测试:测试同学编写的测试脚本,运行业务的各种功能,以验证程序的稳定性。
-
性能自动化测试:测试同学编写的测试脚本,测试重构后的性能表现。
-
单元测试:开发同学编写的测试用例,从代码角度,验证各个类/函数的功能。单元测试前期成本较高,可酌情按需落地。
-
提取(Extract):重构的重用手段,大化小,繁化简,提升代码的可读性。
-
内联(Inline):独立的函数、变量没有对提升代码可读性有帮助,可以进行消除,内联到对应的调用位置上。
-
封装(Encapsulate):封装是实现高内聚的有效手段,“对不变的部分进行封装,为变化的部分提供扩展”。
-
重命名(Rename):函数/变量的重命名有助于提升代码的可读性,如果一个函数/变量无法用一个合适的单词表达,说明这个函数/变量违反了“单一职责”,需要重新进行设计。
-
移动(Move):移动函数/变量,把负责同一个职责的函数/变量放在一起,提升代码的内聚。
一套新架构设计并落地后,我们还需要有效的手段守护架构不被后续的修改破坏。这个手段需要落到具体的工具上,单纯的文档规范无法做到这一点。这个时候架构守护ArchUnit就派上用场了。
-
新架构生效率(分钟表/天表)
-
新架构版本大盘(分钟表/天表)
-
新架构错误码大盘(分钟表/天表)
-
新架构性能大盘(分钟表/天表)
-
稳定性:Java Crash 、ANR 等
-
性能:首帧、帧率、内存等
[12]Android Studio Lint
https://developer.android.com/studio/write/lint?hl=zh-cn
[13]Sonar Lint
https://www.sonarsource.com/products/sonarlint/
[14]Sonar Qube
https://www-sonarsource-com.translate.goog/products/sonarqube/?_x_tr_sl=en&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN&_x_tr_pto=sc