跳转到内容

3. 手里有了一个看不懂的东西

约 25 分钟 难度:新手 动手章

上一章换来一个打开就能用的报价整理器:粘贴文本、点一下,就出结果。整个过程没有人逐行读过它的实现,它照样跑得动。

「能跑」只说明一件事:对刚才那一批输入,工具给出了结果。换一批输入,结果还对不对,这个问题它没有回答。这一章不去读实现,只用不同的输入去问它,把答案记下来。

逐行读懂这段代码是第 8 章的事,这一章先不做。判断一个看不懂的东西可靠不可靠,有一条不需要读代码的路:准备几份稍有差异的输入,每份只改动一处,逐份跑一遍,把实际看到的结果和「本来期待看到什么」对一下。

期待从哪来?来自第 2 章那段模板:输入是逗号分隔的品名、单位、含税价,缺字段的行要标出来。这是现在手里唯一一份「什么算对」,接下来三份样例都拿它当尺子。

第一份是干净数据,三行都齐整:

M6 螺母,个,0.18
M8 螺栓,个,0.55
铜螺母,个,0.42

点「整理」之后,三行照常显示,没有一行标红。实际和期待一致。

第二份缺一个单位,第二行的单位空着:

M6 螺母,个,0.18
不锈钢垫片,,1.20
铜螺母,个,0.42

工具把第二行的单位标成「缺失」并标红,另外两行正常。这正是第 2 章那条规则说好的处理方式,实际和期待还是一致。

第三份里塞了两处第 2 章从没交代过的情况:

垫圈,个,¥0.30
赠品,个,0
铜螺母,个,0.42
  • 第一行的价格带了货币符号「¥」。工具没被告诉过遇到货币符号怎么办,它按数字去理解「¥0.30」,这一格最后显示成一个不是数字的值;又因为这一格并不是空的,它没有被当成缺失标红。看得出不对,却没被标出来。
  • 第二行的价格是 0。第 2 章结尾留过一个没定的问题:价格等于 0 该不该算缺失。工具现在照常显示 0、不标红。这一行算对还是算错,取决于那条还没定下来的规则。
样例期待看到实际看到判定
干净数据三行照常显示,无标红三行照常显示,无标红通过
缺一个单位缺单位的行标成缺失并标红缺单位的行标成缺失并标红通过
价格带货币符号这一行应当被认出有问题显示成非数字,且没标红异常
价格等于 0规则没定,说不清照常显示 0,不标红无法判断

三种判定各自说明一件事:

  • 通过:实际和期待对上了。
  • 异常:实际和期待明显对不上,一眼看得出错。
  • 无法判断:期待本身还没定,所以谈不上对错。

这张表还顺带说明了「能跑」为什么不够。同一个能跑的工具,在干净数据上通过,在带货币符号的数据上异常,在价格为 0 的数据上无法判断。可靠是「在哪些输入下、对着哪份标准」才成立的一件事,不是工具的固定属性。

这一章的产物就是上面那张「通过、异常、无法判断」记录。它比上一章那个能跑的工具更重要,因为它记下的是「哪些情况已经说清、哪些还没说清」,而不只是「工具能做什么」。

第一幕到这里结束:手里有了一个能用的工具,也有了一张暴露出空白的记录。但现在判断它对不对,靠的还是临时肉眼比对,没有一份独立于 AI、事先写下来、能反复用的接受依据。第二幕就从补上这份依据开始:把「什么算对」先写成可以检查的条件,再让 AI 去写实现。

这一节有错或讲不清? 提个 Issue 直接改文档 请作者催更