CHAPTER 062 / 100
第六十二章:这套老系统,年纪比我的工龄还大
听这一章
微软云希 · AI 合成朗读 · 13:55
我第一次完整打开订货模块的核心代码,鼠标滚轮滑了很久。
类名不长,文件很长。
上面有校验,下面有计算,中间夹着几段针对特定客户的判断。注释有些写得很详细,有些只有一句“特殊处理,别删”。
我盯着那四个字,脑子里立刻浮现出一扇贴着封条的门。
人类面对封条,有一种非常稳定的冲动:想看看里面到底关了什么。
我看了一会儿,还是没忍住。
“这套东西,早该重写了。”
声音不大,但足够让旁边的小许听见。
他手里的鼠标停了一下,说:“那你写个方案。”
我转头,才发现这句话落地的效果,和我脑子里完全不同。
我以为自己在评价代码。他听见的,可能是一个新来的人坐了没多久,就准备宣布他们过去几年都在瞎忙。
六月,公司准备接一批新门店。
陈工让我先把订货查询和后续对账相关的链路理清楚。之前那个筛选条件已经做完,我对账号权限有了点认识,接下来要往更里面走。
往里一走,就走进了历史。
我去翻版本记录,才发现这套系统最早的代码比我毕业还早。
一些文件迁过目录,作者名字换了好几个,提交说明从一开始完整写清楚改了什么,逐渐变成“修改”“调整”“再改一下”。
我盯着“再改一下”,很想问上一次到底改了什么。
可历史记录没有义务回应我。
小许说,有的人早就离职了,能找到的他以前也问过,时间久了,对方自己都得想半天。
“那几段你写的吗?”我指着屏幕问。
“有的是,有的比我来得早。”
他停了一下,说不能靠提交记录最后一个名字判断谁设计的,有时只是改个格式,整段都会显示那个人。
我点头。这道理我当然懂,但真看到一坨难看的东西,人的第一反应还是想给它找一个具体负责人。
找到了,就好像事情能简单一点。
小许给我找出一份旧数据,把其中一个特殊分支关掉,让我在本地跑了一遍。
结果出来得很漂亮。
代码少走了几层,返回也更整齐。
然后他指着一条记录问:“这个数量,你准备按瓶算还是按箱算?”
我看着字段里的单位,先说按配置。
他打开另一个页面:“这家店以前订货按箱,后来总部改了包装规格。旧单不能跟着新配置变。”
我没说话,往下看。
另一个看起来多余的判断,是处理门店换归属后的历史记录;还有一个分支,是为了让已经停用的商品仍然能在旧单里被查出来。
这些场景,如果只看今天的配置,都不太像应该存在。
可它们曾经发生过,而且客户明天仍然可能打开那张单。
我一边看,一边在笔记本上补东西。
小许坐回去以后,没再主动说话。
办公室不至于尴尬到能听见呼吸,但我们中间确实多了一层东西。
午饭时我问他下不下楼,他说点了外卖。
我看了一眼他屏幕旁边的饭盒,知道这句话是真的,也知道它并不影响我有点尴尬。
下午,田姐过来找我们。
她是业务负责人,讲话快,包里经常能翻出门店拍回来的照片。她对技术名词没什么兴趣,对“系统现在就是这样”却有极高的警惕。
她问一张订货单为什么在两个页面显示不一样,我刚准备从字段解释,小许先把具体门店问出来。
田姐说了名字,他立刻打开了另一个配置页。
我看着他的动作,意识到这个人脑子里装了一张我还没有的地图。
不是所有路都修得好,但哪条路通哪里,他真走过。
问题确认完,田姐准备走,我叫住她,问现在系统里这些客户差异有没有一份集中的记录。
她说以前整理过,后来改得多,散在项目资料和群里。
“你要做什么?”
“先把这条查询链路里确实还在用的差异列出来。后面改东西,至少知道要问谁。”
她点头,说可以,随手给我发了几份旧资料。
文件名里有最终版、确认版和最终确认版。
我看着它们,暂时没有勇气打开最下面那个“最终确认版二”。
那份“最终确认版二”里,还真有一条关键说明。
一家客户过去用旧商品编码,换系统时没有一次性切完,有段时间两种编码同时存在。现在活跃商品已经统一,旧订单仍然需要找到原来的对应关系。
我原本想把那张映射表当成迁移遗留清掉,看到这里,只能把笔记上的“可删除”划掉,改成“历史查询依赖,需确认保留范围”。
然后又发现一段完全不同的情况。
某个临时开关几年前只用过一阵,相关客户早已停用,后面每次复制模板却都把判断一并复制过来。它仍然活在代码里,但已经没有实际业务在使用。
田姐帮我核了客户状态,小许查了当前配置,我们才把它列进可以单独处理的范围。
这个过程比直接按删除键慢很多。
却能让我在删掉以后,知道自己删的到底是什么。
我把同一份资料里互相冲突的两句话标出来,问田姐以哪个为准。她看完没有硬说当初文档没错,而是翻出后来的确认记录,说这一条已经改过,旧资料没同步。
“你把新的放前面,旧的留个变更说明,免得下个人又问一遍。”
我照着做,又加了确认日期和联系人。没有另起一份叫最新最终版的文件,仍然在团队能找得到的地方更新。
到了下午,小许开始主动给我发几个容易漏的入口。其中一个不在常用菜单里,只有特定账号能看见,我自己从主页面点一圈根本找不到。
我问他怎么知道这么细。
他说以前值过一次问题,凌晨客户就在那个入口操作,别人怎么都复现不出来。
我把这个入口补到链路图上,发现原来想画成一条直线的流程,已经分出去好几条支路。
但这次我没嫌纸乱。它至少开始像真的系统了。
整理到下班,我终于分清了一部分:哪些是当前必须保留的规则,哪些已经失效却没人敢删,哪些纯粹是同一段逻辑复制了几次。
它们都不好看,但不好看的理由不一样。
我把清单发给小许,说想跟他过一下。
他看了前两行,才转过椅子。
“你不是要重写吗?”
“先不重写。”我说,“上午那句话说早了。这里面有些东西我根本没看懂。”
他没立刻接话。
我又说:“但重复查询那几处,我想在不动业务规则的前提下整理一下。你看这个范围合不合适?”
这回我们对着屏幕聊了四十多分钟。
不是愉快到称兄道弟的那种聊。中间他纠正我好几次,我也指出两处他已经习惯、却确实存在风险的地方。
最后留下的是一个很小的改动范围:补清查询口径,去掉确认过的无效分支,把重复获取配置的地方收拢,再给几种历史情况留出能复现的数据。
讨论里有一处,我们来回争了几分钟。
我觉得同一种商品的显示名称应该统一从当前配置取,旧单里多存一份容易不一致。小许说旧名称有时也要保留,不然客户拿着当时打印的单来找,会不知道现在是哪一个。
我问那是不是会导致同一页出现两个名字。
他说有可能,但不能为了看起来一致,把发生过的事情改掉。
我拿了一条示例记录,按两种方式各看一次,才发现自己刚才又站在当前页面的整洁上做判断。
最后我们没有靠谁资历长决定,而是把使用场景列出来,交给田姐确认哪些地方展示当前名称、哪些需要保留单据当时的信息。
这件事比我预想中多花了十几分钟。
但它避免了我们先按一个觉得合理的办法改完,再等客户告诉我们原来不行。
聊完,小许把原来藏在自己笔记里的一个说明也发出来。我说这份应该放公共位置,他说以前整理过一半,后来忙别的,就搁着了。
我问能不能接着补,他说可以,先用我今天这份清单,把重的部分并掉。
没有谁把这叫知识沉淀项目,就是两个人终于愿意把各自手里那一点拼在一起。
我把文件名改成一个以后能搜到的名字,留好原记录入口,也写下目前还有两项待确认,没为了让文档看着完整就删掉问号。
小许说:“这个可以试。”
我听见这句话,反而比听见一句“你随便改”更踏实。
过了两天,我们跟陈工确认方案。
陈工没有反对以后做更大的调整,只问了三个问题:现在最影响什么,改完怎么证明没伤到旧客户,出了问题怎么退回去。
我把准备的东西讲了一遍,小许补了两个我没写全的场景。
讲到排期,我还是有点不甘心,说如果不抽时间处理结构,后面每接一个客户都可能继续加分支。
陈工点头:“所以这次把边界记清楚。后面要动哪一块,拿具体成本来谈。你现在一句重写,大家只知道要停下手头的活,不知道停多久。”
这话让我想起以前自己带人时,也烦过同样的事情。
轮到我坐在另一边,居然又把它说了一遍。
成年人最稳定的能力之一,就是在换了位置以后,重新犯自己批评过的毛病。
会开完,小许留下来问一个旧配置要不要先标记废弃。
我说先别动数据库里的值,只在文档里写清状态,确认没有活跃客户用,再安排清理。
他嗯了一声,又跟我说起自己最早接这个模块的时候。
那时候原开发走了,文档比现在还少。有次客户下午找不到单子,他把几个群翻到凌晨,才找到半年前一句口头约定。
“从那以后我就不太敢随便删。”他说。
我点头,终于明白那句“别删”后面,有时并不是懒。
也可能是一个人曾经独自收拾过残局,暂时没找到更好的办法。
晚上跟小璇聊天,我把上午那句“早该重写”讲给她听。
她说:“你去人家家里,坐下就说这房子该拆了,主人肯定不高兴。”
“我说的是代码。”
“代码也有人天天住在里面。”
我想反驳,没找到合适的角度。
她那边也有个类似的事,新同事觉得以前的页面太乱,提了一套全新的布局。她开始也挺喜欢,后来找用户一试,几个经常用的入口全挪了,大家一下找不到。
“你们最后怎么做?”
“分着改。先改最影响操作的地方,老用户常用的位置先留着。”
她说完,又问我今天有没有好好跟小许讲。
我说讲了,也一起定了范围。
她满意地嗯了一声,伸手去拿旁边的水杯。
我看着那个动作,想起自己上个月还在她屋里拿错杯子的位置。
有些东西从外面看,只是摆得不好看。真要换位置,得先知道别人每天伸手的时候,会往哪里找。
第二天,田姐把一个地址发进群里,说周四去门店,有空的跟她一起。
我问主要看什么。
她说订货、收货、关店之前核单,都看看。
我回复报名。
小许看了眼群,转过来提醒我:“穿双舒服的鞋,别背太重。上次我去了半天,回公司先坐了二十分钟。”
我说知道了。
他又补了一句:“带点水,田姐忙起来会忘记吃饭。”
我把这条写在待办里,放在账号和测试数据下面。
这是那份文档里,没有的一项。