在软件开发中,经常会遇到一些代码问题,例如逻辑结构复杂、依赖关系混乱、代码冗余、不易读懂的命名等 。这些问题可能导致代码的可维护性下降,增加维护成本,同时也会影响到开发效率 。
这时通常通过重构的方式,在不改变软件的功能和行为的前提下,对软件的代码进行重新组织和优化 。达到增强代码的可读性,降低维护成本,提升研发效率和质量的目的 。通过合理的重构,可以大大提高软件的可维护性和可扩展性,从而延长其生命 。
本系列的内容介绍了百度App搜索侧业务如何使用Python/ target=_blank class=infotextkey>Python脚本实现自动化工具,以支持百度App配置数据项调用方式升级为数据通路的重构过程 。通过Python脚本 , 我们实现一些自动化的工具,包括配置数据项调用关系分析、配置数据项接入数据通路的实现、数据项使用方接入数据通路的适配等,以期提高工作效率、减少出错率 。
01、代码重构时的关键步骤及挑战在代码重构过程中,需要考虑重构的效率和重构后的代码质量 。与其相关的关键的步骤如下,这些步骤先后依赖,相互影响:
熟悉业务及技术现状:在开始重构之前,研发首先要理解业务逻辑和流程,熟悉业务能力及技术实现时存在的问题,确定重构的范围 。
确定重构方案:基于对业务逻辑和现有代码问题的理解,确定重构方案 , 重点关注有两点,有问题的代码如何重构和依赖于该代码的调用如何适配 。
分阶段实施:根据重构方案 , 分阶段的修改代码,并测试代码的功能是否正常 。在修改过程中,应该尽量避免影响到不相关模块,这样可以更好地控制风险 。
效果评估及监控:重构方案开发完成,线下对实现的效果进行评估,线上对实现的效果进行监控 , 及时发现异常止损和重构的效果 。
在重构的工作中 , 大部分的工作是人工的方式完成,是一个耗时且容易出错的过程 。对于研发人员来讲,在不改变软件的功能和行为的前提下,保证质量和效率完成对已有功能的重构,是一个极大的挑战 。
02、百度App(IOS)搜索侧的配置数据项重构为了更好的提升系统稳定性和降低配置数据项变更时对上层依赖方组件的影响 , 我们决定对百度App(iOS)搜索侧的配置数据项进行重构 。重构过程的关键节点中有超过80%的工作是由自动化工具完成,支持重构工作上线后零bug,和全部的配置数据项接口内敛 , 提升了系统的安全性和稳定性 。
2.1 重构背景百度App(iOS)-搜索侧的配置数据项,大部分集中在一个类(XXXSetting)中管理 。该类(XXXSetting)以独立组件的方式发布,被超过30个其它组件依赖 。
如图-1 所示数据项使用模块直接调用数据项提供模块(XXXSetting),是直接依赖的关系,数据项的增删相当于接口的变更,对上层的依赖方会产生影响,当接口存在不兼容变更时 , 连带上层的依赖方组件也需要二次的发布 。且该组件中的数据项主要为实验类开关 , 变动较为频繁,影响面也被放大,故需使用比较稳定的方式实现不同模块之间的数据项共享 。
文章插图
图-1
2.2 技术方案在技术实现的层面,主要分为两步
1、第一步为实现多模块之间数据通讯的模块,在本系列的内容中以数据通路代指该模块 。
2、第二步为基于数据通路提供的能力,XXXSetting组件为作数据提供方接入数据通路,原使用XXXSetting组件的使用方接入数据通路,这样就完成了XXXSetting组件中的数据项迁移 。
数据通路的实现 , 目标实现以Key-Value的方式读取及更新配置项,需要从无到有的构建,在本系列的其它章节中内容会有介绍 。但XXXSetting组件对应的重构工作,是基于已有的线上能力的改造,Setting中的数据项超过百个,外部的调用点也是以百为计算单位 , 涉及的组件有30+ 。影响面如何评估,如何保证重构的过程质量和效果是可控的?结合对重构过程的理解,我们采用了Python脚本来支持第二步的工作 。
2.3 使用Python支持重构过程要规避以人工方式为主的重构过程 , 引入错误的风险 , 提升重构过程的质量及效率 。需要引入Python脚本实现自动化工具支持重构过程的工作 。下面以重构的关键步骤 , 自动化工具的应用目标进行列举 。
推荐阅读
- 如何使用 Python 和 python-docx 库读取、写入和操作 Word 文件
- 小米cc9支持无线充电,小米cc9pro能无线充电吗
- 海信电视怎么安装斗鱼,海信投屏格式不支持怎么办
- 大S终于露面了,支持具俊晔画展,却素颜发福不敢跟老公同框合影
- 大S露面支持老公画展,身体痊愈“幸福肥”,和具俊晔眉目传情!
- oppok5支持微信视频美颜吗
- 小米cc9pro支持无线充电吗
- 萧敬腾正式官宣结婚!海边婚纱照别具一格,岳父中风多年仍支持!
- 红米note9pro支持5g
- 暴击联盟传世脚本怎么用 斩魔无双传世手游脚本下载攻略