让 CodeBuddy 审查我的老代码:它揪出了我三十年没发现的坑
抱着试一试的心态把旧代码交给 AI 审查,结果从命名习惯到隐藏 bug,被点评得明明白白。
很多人以为 CodeBuddy 只能「帮你写新代码」,其实它最让我惊喜的用法,是审查旧代码。我硬盘里躺着不少多年没动的「半成品」,有的来自我三十年前跟教程敲的练习,有的是以前抄来改去改烂了的脚本。我一直很好奇它们到底写得怎么样,但没人能问。
上个月,我挑了几段老代码丢给 CodeBuddy,让它帮我看看。这一看,让我又惊又喜。
我是怎么让它审查的
直接把整段代码往对话框里一贴,然后说:
我:下面这段代码是我以前写的,请帮我审查,
按严重程度分类指出问题:①会导致出错的 bug;
②安全隐患;③写得很乱、很难维护的地方;
④性能问题。请用大白话解释每个问题,
并给出修改建议,最后总体打分。
[粘贴代码]
它真的按这个格式给我列了一张清单,每条都标了严重程度,还解释了「为什么这是个问题」。那一刻我像拿到了一个资深程序员的批改卷。
它揪出了哪几类问题
1. 真正的 bug:一处会丢数据的地方
我有一段往文本文件里存数据的代码,它指出:写入时如果程序中途崩溃,文件会损坏,数据全丢。建议改成「先写临时文件,成功后再改名替换」。这个坑我不细想绝对发现不了。
2. 安全隐患:把密码写死在代码里
我连接数据库时,把用户名密码直接写在脚本里。它提醒我,如果哪天这个文件被传到网上或被别人看到,等于把数据库大门钥匙送人。它建议把密码放到单独的配置文件里,并告诉我怎么在 phpstudy 下配权限。
3. 维护性问题:变量名、魔法数字、复制粘贴
我那会儿习惯用 a、b、temp 这种变量名,还特别喜欢复制粘贴。它一条条给我改名,还帮我把三段几乎一样的代码合并成一个函数。说实话,被 AI 点评命名,让我有点脸红,但确实学到了。
4. 性能问题:循环里反复查数据库
它发现我在循环里查数据库,几百条数据就要查询几百次。它改成「一次查完再慢慢处理」,速度立刻快了。这个改进我现在做进销存报表时也在用。
怎么分辨 AI 的建议该不该听
AI 也不是全对,所以我也总结了一套「分辨真伪」的办法:
- 能解释「为什么」的建议,多半靠谱:它说清楚问题背后的原因,而不是只说「这样写更好」;
- 要求你验证的,再动手:改完代码后,我会让它对比「改前和改后行为一样吗」,并跑一遍确认没改坏功能;
- 和自己业务冲突的,以业务为准:比如它建议我把某个功能拆成微服务,我家小卖部系统显然不需要,直接忽略;
- 拿不准的,追问到底:我会说「这个我不懂,能不能用打比方的方式讲给我听」,它解释清楚了,我才敢采纳。
把「审查」变成日常习惯
现在每次 CodeBuddy 帮我写完新代码,我都会让它顺手做一遍自查:「请检查你刚写的代码有没有 bug 和安全问题」。每次都真能找出点东西——这已经成了我的固定流程。
回头看,老代码里那些问题,很多不是「水平问题」,而是「没人帮我回头看」。CodeBuddy 就像是终于出现的那个肯帮我批改作业的人。