林知遥推开工作间的门时,窗外还是灰蒙蒙的。
昨夜改到三点,退货率统计模块还差最后一个函数没跑通。她下楼倒了杯水,顺便看了眼手机——七点十二分,比她平时醒得早。
杯子放到桌角,她拉开椅子坐下,手指刚碰到鼠标,余光扫到键盘右上角压着一张东西。
黄色便利贴。
她的手停在便利贴边缘。房门关着,她只看了一眼,就收回视线。
她把便利贴拿起来。
字迹陌生,或者说,刻意陌生。笔画干燥,没有连笔,像是写字的人故意放慢了速度。没有称呼,没有署名,只有一行极短的内容:
"calcReturnRate 分母 L127 特定条件=0"
下面画了一个小箭头,从"订单数"指向"有效订单数",箭头尾端有一笔多余的压痕,像是落笔时停顿了一下。
林知遥盯着那个箭头看了三秒。
她把便利贴放到显示器旁,打开IDE,搜到退货率计算函数。
光标停在第127行。
分母是 `validOrderCount`。
她往上翻了二十行,找到这个变量的赋值逻辑:当筛选条件过严时,`validOrderCount` 确实可能为零。她昨晚跑测试时用的是模拟数据,订单量大,这个边界没触发。但如果用真实的小商户数据——
她删掉那一行,加了一个判断,重写了分母逻辑。
测试窗口刷新。
三分钟后,最后一个红色用例变成绿色。
林知遥靠回椅背,视线落在那张便利贴上。
她把它翻过来。背面是空的。
她没有扔。
把它压在显示器底座下面,只露出一个黄色的角。
---
第二天早上,林知遥下楼倒水时在转角遇到江屿。
他手里拿着扳手,袖子卷到手肘,像是刚从哪个角落检修完出来。看到她时脚步顿了一下,目光移开的速度比平时快。
"二楼灯线路要换,"他说,语气和平时一样平,"晚上可能断一下。"
林知遥看着他。
他没有看她。
"知道了。"她说。
两个人错身而过。她往楼下走,他往楼上走,整个过程不超过五秒。
林知遥走到一楼,在水槽前站了一会儿,才拧开水龙头。
回到工作间时,她的目光先落在键盘上。
鼠标垫旁边压着一张新的黄色便利贴。
她走过去,拿起来。
这次的内容比昨天长一点,但措辞更短:
"数据流向输入→约束→例外并发场景未覆盖"
没有具体指哪一行代码,但她知道在说什么。
她昨天改完退货率模块后,顺手重构了一段数据流,但并发场景的异常处理确实没写完整。她当时想着"等跑几天再说",没当回事。
林知遥坐下来,打开那个文件。
昨天傍晚她离开工作间去吃饭,大概半小时。晚上十一点她下楼倒水,大概五分钟。今天早上她下楼遇到他,大概三分钟。
她把两张便利贴从显示器底座下面抽出来,和今天的放在一起。
字迹一样。箭头的画法一样,尾端都有那个多余的小压痕。
她把两张便利贴并在一起,纸边对齐,又分开,放进抽屉最上层,然后开始改代码。
这次改得比昨天慢。并发场景的异常处理不是加一个判断就能解决的,要重构整段架构,要考虑锁的粒度,要跑压力测试。
她改到中午,下楼吃了碗泡面,回来继续改。
改到傍晚,窗外的光已经暗下去了。测试窗口里全是绿色。
林知遥存好文件,靠回椅背,手指搭在键盘边缘。
她把手从键盘上拿开,关掉显示器。
---
第三天。
林知遥推开工作间的门,把电脑包放到椅背上。
她没有立刻坐下。
手指碰到鼠标之前,她的目光先扫了一眼键盘右上角。
黄色便利贴,压在键盘边缘。
她看了两秒,才坐下来。
拿起便利贴的时候,她发现这张比前两张小一点,像是从标准尺寸的便利贴上撕下来的。内容也更短:
"L203-L210 可提成函数复用于其他模块"
不是bug,不是风险,只是一个重构建议。
林知遥盯着那行字,手指无意识地摩挲便利贴的边缘。
她拉开抽屉,把前两天的便利贴拿出来,三张并在一起。
第一张,分母为零。第二张,并发风险。第三张,重复代码。
三张都没有废话。没有署名。
她打开IDE,定位到L203。
那段代码确实可以提取成函数。她写的时候赶时间,copy-paste了三遍,现在看着有点丑。
她花了二十分钟重构,跑了测试,提交。
然后她打开抽屉,把第三张便利贴拿出来。
在背面写了一个字。
"暂"
她盯着那个字看了几秒。笔尖没有再落下。
她把便利贴重新压回键盘边缘,字朝下。
---
晚上九点,林知遥下楼倒水。
二楼的灯果然断了,楼道黑着,只有一楼厨房透上来一点光。
她扶着墙走下去,厨房的灯是开着的,但没有人。客厅也是空的。老宅安静得像一座空房子。
但她知道不是。
厂房那边的灯亮着,透过窗户能看到一个模糊的人影在走动。
林知遥站在窗边看了一会儿,然后去接水。
水龙头的声音在空旷的厨房里格外响。