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