代码量锐减 80%,一次祖传代码重构实践
云加社区
共 10690字,需浏览 22分钟
· 2023-10-13
👉导读
👉目录
有一次,我和我妈一起打扫房间,我问我妈:什么时候书房变成了杂物间,堆满了垃圾? 我妈说:我有一次懒得扔纸箱,就把纸箱扔到了书房,然后慢慢就这样了。 我尴尬的笑了笑:那你为什么不定期打扫?扔掉那些你不用的东西? 我妈:前面一直将就着,就等你放假了一起打扫。 我:😁 代码也是如此,十一年的老代码,从某次懒得扔垃圾开始,坏味道便逐渐开始充斥着整个项目。 经过三个月大扫除,我和小伙伴重构了这个迭代十一年的老模块。重构的过程,不仅是对坏味道的清除,对老模块的重新设计,也是一场与十一年前老同事跨越时空的对话。本文将分享重构过程中碰到的代码坏味道,以第一人称分析当初这样写的动机及对应的预防和拯救措施。
01
1.1 接手
1.2 为什么重构
02
2.1 示例
2.2 动机
2.3 预防和拯救措施
2.4 优化之后
03
3.1 示例
3.2 动机
3.3 预防和拯救措施
3.4 优化之后
04
4.1 示例
4.2 动机
4.3 预防和拯救措施
4.4 优化之后
05
5.1 示例
5.2 动机
5.3 预防和拯救措施
5.4 优化之后
06
6.1 示例
6.2 动机
6.3 预防和拯救措施
6.4 优化之后
07
7.1 示例
7.2 动机
我懒得去思考不同接口的数据依赖。于是将所有数据塞到同一个结构体,要用什么直接拿,要写入什么信息,直接写入。反正都是串行执行,不存在多线程问题。
7.3 预防和拯救措施
7.4 优化之后
08
8.1 示例
8.2 动机
反正已经有请求级别的并行了,任务处理级别的并行意义不大。
万一有多线程安全问题,等于给自己挖坑。
8.3 预防和拯救措施
多关注性能。CR 过程中对于主流程添加的逻辑,审视可能带来的耗时增加。上线灰度时,留心监控中被调耗时和内存利用率。
如果请求处理过程中,存在多个可以并行的任务,建议使用 DAG 进行任务注册和任务运行。
8.4 优化之后
09
9.1 示例
9.2 动机
warning,不是 error,能编译通过,我觉得问题不大,有点 warning 很正常。
目前代码能正确运行,我也不想动。
编译过程中输出太多信息了,我不可能去看每一条输出信息。
9.3 预防和拯救措施
编译时打开 -Wall -Werror 编译选项,将 warning 变成 error,中断编译,让 warning 得到足够重视。
9.4 优化之后
10
10.1 示例
10.2 动机
10.3 预防和拯救措施
10.4 优化之后
11
11.1 示例
11.2 动机
11.3 预防和拯救措施
11.4 优化之后
12
评论