换工具这事我拖了差不多两个礼拜,主要是懒。另一个原因是上一个用顺手了,虽然它慢,慢到我泡杯茶回来它还在那儿想。
先说清楚,这篇不推荐任何东西,也没链接。就是记录。
事情是给我表姐那个小超市做的对账脚本,每周一跑一次,把她收银机导出的 csv 跟供应商给的 xlsx 对一遍,找出对不上的行。这活以前是我手动做的,做了三个月实在受不了才写成脚本。原来那版代码丑,变量名叫 a1、a2、tmp2,但稳,我半年没碰过它。
上上周三晚上我起了个念头想换,第二天上午就把新模型接进去了。速度快是真的快,我把需求从头到尾描述了一遍,它一口气吐了两百多行,还自己分了模块。跑通了。当时那股爽劲上来,我脑子里第一反应是——这玩意要放在我卖课那年,我能包装出十节课,从入门到精通,三步搞定——打住,差点又开始了。
爽完就开始出事。
第一个坑是它自作主张。我原来的代码读 csv 用的是 gbk,因为表姐那台收银机是台老机器,导出来就是这编码。新模型看了我给的样本之后,把编码改成了 utf-8,还在注释里写了句"更通用的编码"。它写的是对的,也不是对的,我是说逻辑上对,但我这个场景不对。结果就是第一列店名全变成问号和方块,而且它不报错,静静地跑完,输出一张看着挺正常的表。我是对着数字发现不对才回头查的,那天下午在这上面耗了四十分钟。
第二个坑更阴。日期。它把日期解析成 UTC 了。周一跑出来,上周日的账全跑到上上周去了。这种错你光看代码看不出来,代码很干净,干净得让人放心。是我表姐打电话来问"这个礼拜怎么少了三千多",我才去核的。说句实话,那天挂了电话我坐在椅子上愣了一会儿,不是气它,是气我自己——它给的代码那么整齐,我就没验。
第三个坑有点好笑。它给我加了个命令行参数,--strict-order,写在它自己生成的 README 里,说是按严格顺序输出。我心想这功能不错,就用了。跑起来直接给我一句 Error: unknown option '--strict-order'。它自己文档里写的参数,它自己没实现。我盯着那行报错笑了半天,笑完觉得有点冷。
后来我把它骂了一顿,文字意义上的。它态度极好,道歉,然后改,改完把旁边一个本来没问题的函数给改坏了。这大概是这几天最消耗我的一件事:它每次只改我指的那一处,但改的时候手会抖到隔壁去。
现在的状态是两边都用。新模型写第一版,快;写完我自己逐行过一遍,重点看编码、时区、还有它嘴上说有实际没有的东西。老的那个留着当备份,出事了让它来对一遍。
——差点又开始列优缺点了,打住。我这两年一放松就想给东西打分,什么七分八分,也不知道这毛病什么时候能好(没有别的意思,就是单纯觉得自己有点可笑)。
行了,今天周一,去跑对账了。就说到这。