结论先给:如果工具原本接受的是单个词,现在改成接受词表、短语或带字段的行,输入规范不能只做“换行替换”,而要先明确三件事——每个输入单元的边界、空值与重复的处理方式、以及输出字段与输入字段的对应关系。只要这三件事没有写进规范,同一批数据在不同角色手里就会得出不同结果。下面给出一套可核对的改法,并指出一个会让结论失效的反例。
对象格式变化通常分三层,改动成本完全不同:
判断方法很直接:拿三条真实输入,让两个角色各自按现行规范手工拆一次,如果拆出的单元数量或内容不同,就说明变化落在结构层或语义层,而不是分隔层。
规范要能被核对,就不能只写“支持多种格式”。建议按下面顺序落成文字,每一行都能被验证:
一个假设例子:假设输入从“每行一个词”改为“每行一个词加一个地区码,用制表符分隔”。若规范只写“用制表符分隔”,那么当某个词本身含制表符时,该行会被拆成三个字段,地区码错位。可核对的改法是先规定“字段内不允许出现制表符,出现则整行判为无效并记录行号”,再让处理方按行号回退修正。这个动作的结果是:无效行不会被静默丢弃,后续核对时能定位到具体输入,而不是只看到总数对不上。
上述“先定边界再处理”的顺序,在一种情况下不成立:当工具本身对输入对象做了归一化,例如自动合并同义写法、自动补全缺失字段时,输入规范的严格程度就不再是结果差异的主因。此时两个角色按同一份规范输入,仍可能得到不同结果,因为差异来自工具的归一化规则而非输入拆分。判断依据是:把同一份输入重复提交两次,若两次结果不一致,或把明显不同的两种写法提交后得到完全相同的结果,就说明归一化在起作用。这种情况下,改输入规范只能解决一部分问题,还需要把归一化规则单独记录并核对,否则会把工具行为误判为输入错误。
不要直接全量替换输入格式。先取一小批能覆盖边界情况的样本,至少包含:正常单元、含分隔符的单元、空值、重复项、超长短语。让两个角色各自按新规范处理同一批样本,然后逐项对比单元数量和内容。若全部一致,再把规范定稿并说明适用条件;若不一致,先回到上一步确认差异出在拆分、空值还是归一化,再决定是改规范还是改处理流程。这个动作的价值在于:把“对格式的理解分歧”转成可以逐行核对的记录,后续任何人接手都能复现同一套判断,而不是依赖口头约定。