破解遗留系统快速重构的5步心法(附实例)

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

  • 编码之前缺乏有效的设计
  • 成本上的考虑,在原功能堆砌式编程
  • 缺乏有效代码质量监督机制

可以看出,最好的解决办法就是不要堆积遗留问题。对此,业界现有的比较“成熟”的解决思路是:通过持续不断地重构将代码中的“坏味道”清除掉。 可惜说起来容易,做起来却很难,要克服遗留系统重构往往有三大阻力:首要的就是怕出错,不知道怎样保障重构的安全性和效率,其次,很多遗留系统规模及业务复杂度太高 开发人员又缺乏改造的方法及经验,根本不知从何入手 而且如果修改只是单单停留在代码层面上,很难彻底解决问题,从而提高研发效率和提高产品质量。 后来我们扒了不少文章,终于看到一个不错的,一针见血地指出了三个关键点:自动化、系统化及工程化 简单来讲,就是要先通过自动化重构提高开发效率,再通过系统的流程方法,逐一击破,最后通过工程化管理,持续演进,如下图所示。

图片

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

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

为了让内容能够切切实实地帮助到大家,听说这个专栏经过了多次深入用户、专家调研的反复打磨。而且实打实地带大家实战,围绕着一个贴近日常开发场景的 APP 项目重构。特意看了下,这个实例里综合了很多遗留系统里的典型代码“坏味道”和代码耦合问题。 完整跟下来,不但能帮助你和你的团队掌握专栏里的流程方法、工具、设计思想,还能融会贯通到其他项目中,真正做到提高团队效率,提升最终的交付质量。
图片

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

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

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

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

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

图片

详细可直接查看《大型Android系统重构实战》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 移动应用遗留系统重构(13)-🔥🔥🔥一镜到底!MVP重构示例篇 前言 上一篇移动应用遗留系统重构(12)- 编译调...
    Kepler_II阅读 264评论 0 0
  • 背景 《重构》诞生至今有近17个年头了,日常开发中大家谈到重构,要么非常随意,认为重构就是改代码;要么非常谨慎,把...
    零一间阅读 659评论 0 3
  • 第一部分 开始 第 01 章 了解遗留项目中的挑战 1.1 遗留项目的定义 任何已经存在的、难以维护或难以扩展的项...
    技术楠阅读 1,676评论 0 0
  • 背景 《重构》诞生至今有近17个年头了,日常开发中大家谈到重构,要么非常随意,认为重构就是改代码;要么非常谨慎,把...
    李永顺阅读 3,385评论 0 18
  • 遗留代码 从何而来 软件是如何演变成遗留代码? 初期,架构清晰,代码精炼,指点江山 中期,新功能简单在原有代码加上...
    JayWu的架构笔记阅读 293评论 0 0