查看原文
其他

迷的一批,上线了新功能,老功能就废了!

鱼皮 程序员鱼皮 2022-08-14

大家好,我是鱼皮,今天借我自己的惨痛经历,给大家分享一个改 Bug 的小技巧。

事情是这样的,一个月前,我开发完成了功能 A,上线后也没出现什么问题;前两天呢,我又在功能 A 的基础上加上了功能 B,伪代码大概是这样:

// 功能 B
result = doFunctionB();
// 功能 A 
result = doFunctionA();
// 返回
return result;

结果呢,没想到新的功能 B 上线后,老的功能 A 就失效了!这就给我急坏了,明明我只是加了一个功能,没有改老功能的任何一行代码,怎么就失效了呢?

我们暂且不关注代码的细节,如果你和我一样遇到了这种情况,会怎么排查呢?

传统查 Bug 的方式可能就是再重新操作一遍、复现一下 Bug 对吧,然后去逐行检查代码,再打个断点 Debug 一下。但因为现在系统的逻辑实在是太复杂了,每个功能都有几百行的代码量;而且由于网络环境、数据隔离的原因,不太方便打断点调试,只能补充更多日志来观察到底是哪个细节出现了问题,实在是太麻烦了!

所以,我的做法是,直接找到自己写新功能前的老代码,和加上新功能后的代码做对比。这样只需分析改动了的代码,就能很轻松地定位到问题。

怎么找到自己之前的代码呢?有两种方法:

第一种,利用 Git 之类的 VCS(版本控制系统),直接查看老版本的代码。建议使用 JetBrains IDEA、VSCode 等集成开发环境自带的 Git 可视化管理功能,可以查看每次提交的代码记录:

JetBrains 开发工具查看提交记录

双击某个具体的提交,可以查看提交前后代码的改动。建议大家养成好的开发习惯,尽量给每个功能点划分一次提交或分支,这样每个功能改动了哪些代码一目了然:

对比代码

如果你的代码还没有提交怎么办呢?改动前的代码还能找回来么?

当然可以!

在 JetBrains 系列开发工具中,只需要在代码文件中点击右键,选中 Local History => Show History,就能查看到本地的修改历史了!

查看本地修改历史

这下真的是一目了然了,基本上 30 天内的改动都能找回来,删了代码也不怕!

查看历史代码

如果你使用的是 VSCode,记得先安装 Local History 扩展,否则不会自动帮你保存代码历史哦!

好了,今天就聊到这里,最近业余时间在忙着搞网站,有空了再给大家分享下写 Bug 心得。

往期推荐

网站又被攻击,我心态崩了

绝了,小白都能用的反编译神器!

这个 Bug,给我整得一愣一愣!

2分钟,我把网站性能优化了3倍!

N 年沉淀,腾讯这套系统终于开源!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存