大型 Android 系统重构实战
黄俊彬
Thoughtworks 资深咨询师
2840 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
大型 Android 系统重构实战
15
15
1.0x
00:00/00:00
登录|注册

01|初识重构:重构的类型、收益和度量

你好,我是黄俊彬。这是我们专栏的第一课,我将系统给你分享重构的类型、时机、收益和度量。
在之前的很多咨询项目中,每当我和一些同学聊起重构时,都会被问到一个问题:到底什么是重构?一个开发同学说他在研发过程中,经常有产品、测试、项目等同学对他提代码重构的需求,比如后面这些情况。
测试同学说:今天的版本测试又发现了内存泄露,你重构一下代码吧。
产品同学说:这个界面的用户路径操作太深了,你重构一下代码吧。
项目同学说:我们的线上 Bug 很多,质量太差了,你重构一下代码吧。
乍一听你可能会觉得这些同学说的好像也没错,但是你仔细一琢磨,就会发现这里面其实包含了性能优化、需求优化、缺陷优化等诸多内容,这些都算代码重构吗?另外,重命名一个方法、提取一个接口、单体架构组件化,这些又算是重构吗?它们之间有什么区别呢?
所以我觉得在课程的最开始,我们很有必要先理解清楚重构的概念,明白它能直接或间接为我们解决哪些痛点问题,以及如何来度量重构的收益。搞清楚这些定义后,上面的问题你都会有答案。

重构的类型和时机

首先,我们来看一下重构的定义。
重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

重构是软件开发中不可或缺的重要概念,本文系统地介绍了重构的定义、类型和时机,以及重构的实际收益和度量方法。文章首先明确了重构的定义,强调了其不改变软件可观察行为的特点。根据重构的影响范围和工作量,将重构分为小型、中型和大型三种类型,并举例说明了各种类型的具体操作。此外,文章还探讨了重构对团队能产生的收益,以及如何进行度量。重构的收益主要体现在降低研发维护成本、提高产品质量和研发效率等方面。对于度量,可以通过代码健康度相关指标变化和工程效率上的指标变化来评估重构的价值。总的来说,本文通过具体案例和实际操作,全面解析了重构的类型、时机和实施策略,为读者提供了全面的重构知识概览。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大型 Android 系统重构实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 郑峰
    实践中以中型重构为主。 小型重构在代码提交时已经完成。 大型重构则需要有计划进行,比如自动化重构工具的构建,和自动化保障规则的构建。

    作者回复: Hi,郑峰。期待一起完成专栏的学习。

    2023-02-18归属地:美国
    1
  • 白煮迁回
    之前重构项目都面临如何体现价值的问题? 文章中老师说的方重构前就需要对工程指标化,这部分相对容易些. 但对业务价值如何体现比较难? 比如: 1.承接需求开发效率指标无法准确获取.重构的同学一般与开发业务同学是2波人,需求评估工时无法明确重构带来提效价值. 2.重构后质量会有劣化期.复杂业务逻辑修改时引入新问题,反而多做多错. 3.重构专项推动比较难, 一般都是转化为做需求时顺便重构,反而劣化承接需求效率 解决方案 1.统计rd承接需求工时变化,但效果不明显 2.加载自动测试方案+多自测+多review,可以减少 但无法完全避免 3.在业务需求空白期推动/拆成小步迭代

    作者回复: Hi,白煮迁回,非常开心收到你的留言。 正如文中所说,重构不直接影响业务的价值,但它会直接影响软件的研发维护成本,从而影响整体的收益。所以确实很难直单纯从业务的价值来体现价值,你可以参考文中介绍的一些工程指标来体现。 对于你列举的场景: 关于第一点,我辅导的很多团队要求是重构和开发业务的同学是一波人,因为只有足够熟悉业务才能更好完成重构工作。 第二点,重构后如果质量劣化,那证明重构的整个流程方案存在一些问题,这也是本专栏的一个重点,如何在足够的质量保证下进行安全的重构。 第三点,对于中小型的重构一般都是做需求时一同进行,但大型的重构建议是立专项来进行。中小型重构一般都是通过自动化来辅助完成,效率安全性有足够的保障。 期待和你一起完成专栏的学习,也希望你能将专栏的内容运用到项目上去。🤝

    2023-02-14归属地:北京
    1
  • dulp
    大型重构进行的较少,其次是中型重构。中型重构一般是代码质量不高和业务改动较大同时出现时会进行。之前一直没有思考如何度量重构的收益,这篇文章帮助很大。

    作者回复: 以终为始才能更好完成重构的工作🤝。

    2023-03-11归属地:江苏
  • Geek_6061ea
    请问老师,Sonar 是个线上的平台,可以扫描多仓吗?扫描代码有泄露风险,以及需要收费,难以说服公司接入。对于收益和度量的每个点,都有本地扫描工具替代吗?

    作者回复: Geek_6061ea,你好。感谢你的留言。 Sonar支持扫描多个仓库,通常来说企业都是采用私有化部署,所以信息安全相对还好。建议你这边可以考虑先使用Sonar的社区版,是免费的。另外,对于收益和度量,一些常用的度量指标相关工具都可以进行统计。

    2023-02-14归属地:广东
  • zenk
    目前整个系统 1. 缺少分层不分核心业务和运维业务,各种逻辑都在一个函数里面 2. 缺少模块化,同样的逻辑分散 3. 导致理解业务逻辑,老担心是不是还有其他地方的代码没有看 这样的系统该如何一步一步的重构 目前的思路大致是: 1. 最多是组件级别重构 2. 识别那些坏味道,小步改进 3. 模块化的时候,梳理出依赖关系,按照依赖关系,先模块化前置依赖 请教老师 1. 这个步骤靠谱不,求其他建议 2. 另外执行的时候需要和领导沟通具体的工作和厂出,按照上面的度量,领导听了感觉太有说服力,不知这方面该怎么做

    作者回复: zenk,你好。感谢你分享了你目前产品的相关问题,也非常开心看到了你对目前系统改进的思考,这是一个非常好的开始。 思路里面提到了一些点,例如小步、模块化及依赖关系,这些都是非常好,但是相对来说比较零散。在分析设计篇和解耦重构篇中会有更系统 的方法及流程。相信完成专栏的学习,一定能够帮助你解决系统 的痛点。 另外关于度量,我们也会有一章专门来介绍相关的实践落地经验,希望你能坚持完成专栏的学习 ⛽️

    2023-02-14归属地:上海
  • 小虎子🐯
    干货满满,期待后面的内容

    作者回复: 👍,期待一起学习完专栏的所有内容。

    2023-02-13归属地:北京
  • Agei
    大型重构的价值,其实看着都比较具象,但是其实在立项前去盘点价值其实难度很高,就是比如老师讲的bug数量如何减少这个在重构前去盘点有点伪命题,举例来说,之前开发A模块平均产生30个bug,重构完之后产生10个bug,这个其实是个结果,但是不一定重构能解决此问题,老师能直接给个大型重构价值推导的具体例子么?这样看着更有借鉴和学习思路,多谢老师
    2023-05-08归属地:北京
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部