3. 手里有了一个看不懂的东西
上一章换来一个打开就能用的报价整理器:粘贴文本、点一下,就出结果。整个过程没有人逐行读过它的实现,它照样跑得动。
「能跑」只说明一件事:对刚才那一批输入,工具给出了结果。换一批输入,结果还对不对,这个问题它没有回答。这一章不去读实现,只用不同的输入去问它,把答案记下来。
不打开实现,也能问它问题
Section titled “不打开实现,也能问它问题”逐行读懂这段代码是第 8 章的事,这一章先不做。判断一个看不懂的东西可靠不可靠,有一条不需要读代码的路:准备几份稍有差异的输入,每份只改动一处,逐份跑一遍,把实际看到的结果和「本来期待看到什么」对一下。
期待从哪来?来自第 2 章那段模板:输入是逗号分隔的品名、单位、含税价,缺字段的行要标出来。这是现在手里唯一一份「什么算对」,接下来三份样例都拿它当尺子。
三份样例,三种结果
Section titled “三份样例,三种结果”第一份是干净数据,三行都齐整:
M6 螺母,个,0.18M8 螺栓,个,0.55铜螺母,个,0.42点「整理」之后,三行照常显示,没有一行标红。实际和期待一致。
第二份缺一个单位,第二行的单位空着:
M6 螺母,个,0.18不锈钢垫片,,1.20铜螺母,个,0.42工具把第二行的单位标成「缺失」并标红,另外两行正常。这正是第 2 章那条规则说好的处理方式,实际和期待还是一致。
第三份里塞了两处第 2 章从没交代过的情况:
垫圈,个,¥0.30赠品,个,0铜螺母,个,0.42- 第一行的价格带了货币符号「¥」。工具没被告诉过遇到货币符号怎么办,它按数字去理解「¥0.30」,这一格最后显示成一个不是数字的值;又因为这一格并不是空的,它没有被当成缺失标红。看得出不对,却没被标出来。
- 第二行的价格是 0。第 2 章结尾留过一个没定的问题:价格等于 0 该不该算缺失。工具现在照常显示 0、不标红。这一行算对还是算错,取决于那条还没定下来的规则。
把三份样例记成一张表
Section titled “把三份样例记成一张表”| 样例 | 期待看到 | 实际看到 | 判定 |
|---|---|---|---|
| 干净数据 | 三行照常显示,无标红 | 三行照常显示,无标红 | 通过 |
| 缺一个单位 | 缺单位的行标成缺失并标红 | 缺单位的行标成缺失并标红 | 通过 |
| 价格带货币符号 | 这一行应当被认出有问题 | 显示成非数字,且没标红 | 异常 |
| 价格等于 0 | 规则没定,说不清 | 照常显示 0,不标红 | 无法判断 |
三种判定各自说明一件事:
- 通过:实际和期待对上了。
- 异常:实际和期待明显对不上,一眼看得出错。
- 无法判断:期待本身还没定,所以谈不上对错。
「无法判断」这一行最值钱
Section titled “「无法判断」这一行最值钱”这张表还顺带说明了「能跑」为什么不够。同一个能跑的工具,在干净数据上通过,在带货币符号的数据上异常,在价格为 0 的数据上无法判断。可靠是「在哪些输入下、对着哪份标准」才成立的一件事,不是工具的固定属性。
留下什么产物
Section titled “留下什么产物”这一章的产物就是上面那张「通过、异常、无法判断」记录。它比上一章那个能跑的工具更重要,因为它记下的是「哪些情况已经说清、哪些还没说清」,而不只是「工具能做什么」。
第一幕到这里结束:手里有了一个能用的工具,也有了一张暴露出空白的记录。但现在判断它对不对,靠的还是临时肉眼比对,没有一份独立于 AI、事先写下来、能反复用的接受依据。第二幕就从补上这份依据开始:把「什么算对」先写成可以检查的条件,再让 AI 去写实现。