如何从 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!

👇扫码免费试读

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

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

相关推荐

  • Rust 语言年度回顾:全球企业如何采用 Rust的?
  • 背负着整个现代网络,却因“缺钱”放弃开源,core-js 负责人痛诉:“免费开源软件的根基已经崩塌了”
  • 线程池中线程抛了异常,该如何处理?
  • 今日公开课|金三银四面试真题解答---spring源码专题
  • Bard翻车后 谷歌员工选择了跳槽OpenAI搞ChatGPT......
  • 每个用户都必须知道的Web 3.0的关键特性
  • 数十亿下载项目面临维护困境!负责人抱怨:开源被破坏到无人买单!
  • FF 91 再获融资,贾跃亭真的要回来了?
  • 去年,亏爆了。。。
  • AI大佬不满ChatGPT:亟待完善ChatGPT的道德护栏
  • 收藏!AI从业者必备表情包!
  • 终于见识到了python基础的天花板!!!
  • 没工作,靠“跨境电商”风口猛赚两年:有钱人的快乐,你真的想不到 !
  • 《瓦尔登湖》:人生最好的活法,是过低配的生活
  • 对手来了!亚马逊生成式 AI 比 GPT-3.5 更好
  • 马斯克称计划今年底卸任推特CEO;腾讯回应微信将进军外卖服务;C++23 提上日程 | 极客头条
  • 阿里版ChatGPT已进入测试,中文聊天截图曝光!
  • 一个通用面试神器
  • 阿里的订单超时处理方案
  • 万字长文聊聊Web3的组成架构