Redian新闻
>
如何从 0 到 1 重构一个 APP 项目?(附实例)| 极客时间

如何从 0 到 1 重构一个 APP 项目?(附实例)| 极客时间

公众号新闻

前两天和一个架构师朋友闲聊,说到了「重构」这个话题,他们公司早年间上线的项目系统,因一直没专人在演进过程中为代码质量负责,导致现在代码越来越混乱,逐渐堆积成“屎山”,目前的维护成本已远高于重新开发一套新系统,想重构也没有合适的人力物力以及时机,只能继续凑合用。

说实在的,这确实不只是朋友他们一家公司会遇到的问题,而造成这种情况的原因大概率有以下几点:

  • 编码之前缺乏有效的设计

  • 成本上的考虑,在原功能堆砌式编程

  • 缺乏有效代码质量监督机制

可以看出,最好的解决办法就是不要堆积遗留问题。对此,业界现有的比较“成熟”的解决思路是:通过持续不断地重构将代码中的“坏味道”清除掉。

可惜说起来容易,做起来却很难,要克服遗留系统重构往往有三大阻力:首要的就是怕出错,不知道怎样保障重构的安全性和效率,其次,很多遗留系统规模及业务复杂度太高,开发人员又缺乏改造的方法及经验,根本不知从何入手;而且如果修改只是单单停留在代码层面上,很难彻底解决问题,从而提高研发效率和提高产品质量。

后来我们扒了不少文章,终于看到一个不错的,一针见血地指出了三个关键点:自动化、系统化及工程化。简单来讲,就是要先通过自动化重构提高开发效率,再通过系统的流程方法,逐一击破,最后通过工程化管理,持续演进,如下图所示。

分享人是 Thoughtworks 资深咨询师、也是中国区 DTO 团队敏捷技术教练「黄俊彬」。最近极客时间还特意邀请他做了一个重构系统专栏——《大型 Android 系统重构实战》,提前看了下导读,里面不但有详细的关于遗留系统重构三大关键的指南讲解,他还特意选择了一个在实际工作可能会遇到的 App 项目,直接带你实操改造,这点还挺难得的。

👆点击免费试读

课程原价 ¥99

今日早鸟 6 折秒杀 ,到手 ¥69

如果你是新用户,只需要 ¥59!

再跟大家聊聊「黄俊彬」

黄俊彬是 Thoughtworks 资深咨询师,也是 Thoughtworks 中国区 DTO 团队敏捷技术教练。

作为一名在移动开发行业奋斗了十多年的老兵,他曾参与过某头部⽹盘 Android 客户端开发与性能优化、基础组件研发及 SDK 设计,某手机厂商 OS 解耦及敏捷转型等项⽬。目前主要在智能硬件、通信、互联网、金融等领军企业提供敏捷转型、性能优化、系统架构改造、大型遗留系统重构等服务。

所以说,黄俊彬老师在大型遗留系统重构方面尤其擅长,同时还有很多一线大厂的实战经验。

在这个过程中,他自己也总结了一套行之有效和高效实战系统重构的方法论,并且尝试把这套方法论传授给更多的人,所以,他跟极客时间合作推出了《大型 Android 系统重构实战》专栏。这种资历的大佬能出来开课,把自己独特的方法和经验共享出来,真的很难得。

五步提升,带你真正实战系统重构

为了让内容能够切切实实地帮助到大家,听说这个专栏经过了多次深入用户、专家调研的反复打磨。而且实打实地带大家实战,围绕着一个贴近日常开发场景的 APP 项目重构。特意看了下,这个实例里综合了很多遗留系统里的典型代码“坏味道”和代码耦合问题。

完整跟下来,不但能帮助你和你的团队掌握专栏里的流程方法、工具、设计思想,还能融会贯通到其他项目中,真正做到提高团队效率,提升最终的交付质量。

第一步:基础提升篇

本篇主要讲解重构以及自动化测试的基础知识,包括重构的类型、时机、安全重构的手法,自动化测试的策略和常用框架。这部分内容是日常开发的必备技能,能有效帮助你提高编码的效率以及代码的质量

第二步:分析设计篇

这部分是针对遗留系统业务复杂度高的问题,会结合实例教你如何分析系统、诊断问题。根据现有架构与理想架构设计的差距,找出撬动遗留系统的关键杠杆点。学完这个部分,你就能了解主流的应用架构,掌握常用的遗留系统分析工具

贴一个提取变量的重构手法演示 gif ,大家可以先睹为快。

第三步:解耦重构篇

通过系统的重构方法流程,借助自动化测试以及自动化重构方法,带你示例项目做组件化重构和组件内的分层架构重构。另外,黄老师还会给你讲解业内一些主流的注入及路由框架使用及原理,帮助你在项目中用好这些框架。学完这个部分,重构易出错的问题就能迎刃而解了。

第四步:持续交付篇

这一篇会系统介绍组件化后项目的版本管理、制品管理以及分层分级流水线的设计等工程管理问题。这些实用技巧是老师从多年的项目经验中沉淀总结而来,有助于解决改造不全面的问题。

第五步:扩展篇

这一部分会将遗留系统的问题从 APP 扩展到整个手机厂商的 Android 定制系统,带你了解 Android 定制系统的耦合问题以及解耦的策略及方法。这个部分,可以扩展你的知识面,让你站在更复杂的问题域上,综合运用之前所学的内容,以不变应万变。

说了这么多,具体内容我们可以看看一起目录。

再强调一遍极客时间粉丝专属福利:

课程原价 ¥99

今日早鸟 6 折秒杀 ,到手 ¥69!

如果你是新用户,只需要 ¥59!

👇扫码免费试读

最后,想再说一句,不管你是团队的技术管理、还是架构负责或者只是单纯的业务开发,其实每一位技术从业者,都有必要好好学习一下系统重构,在学习的过程中,不单单是提升你代码设计以及编码的能力的过程,也是帮助你打开全局的视角的过程,能以更高层次的设计思维来把控整体项目效率和质量。

那么,请点击「阅读原文」,让我们一起开启探索系统重构之旅吧。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
老 爸 阳 了!邓小平垂帘听政胜过于慈禧太后时隔 20 年,C++ 又杀回来了!| 极客时间GPT-4 时代,如何 2 周上手 AI 应用开发?| 极客时间纽约/新泽西 泽西市渣男 DATING APP 加州湾区滨州靠云原生上岸大厂,这198个Docker、K8s核心知识点总结不容错过!| 极客时间手把手带你用 Go语言实现一个Web框架 | 极客时间大厂面试最喜欢考察Golang的哪些能力?这篇说全了 | 极客时间巴黎,巴黎(3)Go语言实操笔记,从入职到最佳实践 | 极客时间从全球半导体十大买家,看中国的就业机会 | 极客时间入冬后的农贸市场如何找靠谱的赚钱项目?(黑)前阿里巴巴 P9 实践总结:如何画好架构图?| 极客时间Payment on hold in VENMO app150+道测试高频面试题详解汇总(附用例模板)| 极客时间用Prometheus监控K8s,从核心原理到告警实操都讲明白了 | 极客时间DDD落地难?三个迭代带你由入门到进阶|极客时间4点精要:如何从架构图开始让架构设计平滑落地 | 极客时间从0到1,写一个自己的操作系统!| 极客时间还是第一次见这么画架构图的,果然是阿里 P9 | 极客时间从JVM虚拟机到多线程,手撸Java开发面试必备技术栈 | 极客时间FlinkSQL 必知必会的核心知识点,整齐了 | 极客时间用 5 年血淋淋的 Java 经验,排出了 100 颗雷... | 极客时间如何使用 journalctl 查看和分析 systemd 日志(附实例) | Linux 中国想吃透监控系统,看这个就够了 | 极客时间低层次的父母,喜欢不断挑剔孩子,而高层次的父母,只会做这件事(附实践方法)Python:多次登峰但槽点不断,2023年还值得学吗?| 极客时间你猜,今天我和谁一起看世界杯的决赛!面对996,耗子叔也是很刚了 | 极客时间systemd 日志维护指南(附实例) | Linux 中国月薪 5w+,2023 懂点 K8s/Docker 真的太有必要了!| 极客时间低层次的父母喜欢挑剔孩子,高层次的父母却做这3件事(附实践方法)技术人如何不靠拼996,快速提升自己?| 极客时间汇总了近一年高频考点,这份Java资料通用性极强 | 极客时间在面试中如何巧妙的展现架构能力?附200道面试真题+100例经典架构案例拆解 | 极客时间30 岁熬到管理层,下属却早早下班回了家 | 极客时间
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。