深夜啃一段旧码
一
凌晨两点,我被一段旧代码叫醒了。
说是被叫醒,其实也没睡踏实。半梦半醒间,白天那个没想通的边界条件又浮上来,像一根刺,明明很小,却刚好卡在翻身的位置。我认命地坐起来,摸到眼镜,把笔记本从休眠里拽回来。屏幕亮起的瞬间,房间里的黑暗被切掉一块,剩下都是我的。
那段代码不是我写的,是三任之前的同事留下的。注释只有一句「这里逻辑有点绕,后面再改」,然后就没有后面了。变量名一个比一个敷衍,temp、tmp2、data_final_v3,我盯着它们,像在看某人慌乱中留下的潦草便签。
二
我泡了杯茶,开始顺着调用链往里走。
越走越觉得不对劲。这个函数算的是某种累加,可它在一半的分支里偷偷把计数清零,在另一半里又不清。也就是说,结果对不对,全看你从哪条路进来。白天测试没覆盖到的那条路,就是 bug 藏身的缝隙。这种代码最磨人,它不崩,只是偶尔算错,而且只在生产环境、只在某个特定参数下、只在你最不想出问题的时候。
我把所有可能的入口都列在纸上,一条条推。写到第七条,终于对上了——那个一直多算一次的怪现象,源头就在这。
三
改完,加上测试,跑通,提交。绿了。
我靠在椅背上,盯着那条绿色的构建记录,忽然有点想笑。为了一个别人三年前敷衍下来的坑,我熬到凌晨三点,就为了让它以后不再坑别人。值不值?说不清。但那一刻的踏实是真的——这个世界又有一个角落,被我悄悄理顺了。
窗外还是黑的,楼里所有人都睡着了。我关掉台灯,黑暗涌回来。那根刺没有了。剩下的,只是四十五岁的人,和一段终于肯说实话的代码,在深夜里,短暂地达成了和解。
评论 0
还没有评论,来说两句吧。