示例优于抽象规则描述
别名: 格式示例 · worked example format · 抽象正则说明
概念解释
「8–20 位字母数字及下划线」是抽象规则;「如 user_01」是示例。人在填格式化字段时,更常按看得见的实例去仿,而不是先把规则编译成心理正则。示例优于规则(example-over-rule)说的是:需要传达形状时,先给一个合法实例,规则作补充;只给抽象描述,仿写会走样。它不管提示出现在输入前还是出错后,也不管提示是否常驻。
机制
抽象规则要经过一次语言到形状的翻译:位数、字符类、分隔符位置都被编码成句子。翻译会丢细节——「字母数字」还包不包含空格、「日期」是日月年还是年月日,句子里往往含糊。示例把形状直接摊开:几段、哪几位是数字、符号在哪。这和教学里的样例学习(worked example)同一条路:先模仿具体物,再归纳。坏示例同样强:看起来像真值的电话号码会被提交;只展示一种地区格式,其他合法变体会被当成错误。示例是强约束,所以必须选对。
怎么研究
同一约束分别用抽象句子、单一示例、示例加一句规则来呈现,比较首申合法率、合法变体是否被误拒的自我报告、以及是否提交了示例原文。自变量:格式是否有多种合法写法、示例是否明显假。因变量:仿写准确、把示例当值、过度收窄(只接受与示例同构的串)。不要用「读懂规则了吗」的问卷代替实际打出来的串——人会说懂了,打出来仍按示例的空格走。
边界
示例无法覆盖互斥的多种合法形状(国际电话有无国家码、日期的多种本地写法),只给一个会把其余合法输入训练成「错」。安全规则里「不要用常见词」很难举例,举例本身可能变成一本弱密码词典。正则对开发者文档是对的,对最终用户不是;把正则当示例会比抽象中文更糟。需要精确字符类(校验码、车辆识别号)时,示例要配上仍可见的位数,单靠一个实例会被看成允许改长度。
怎么落地
- 用一个明显非真实的合法实例展示形状,再配一句只补示例没说清的约束。
- 有多种合法写法时,要么给两个对照实例,要么写明「以下之一」,不要让单一示例变成唯一模板。
- 不要把示例做成看起来能提交的真值(真实手机号、真实姓名)。
- 验证:遮住抽象句子,只留示例,看人打出来的串是否合法;再给一串与示例不同构但合法的值,看他们是否不敢提交。前者失败就换示例,后者失败就补变体说明。