E2.19.4unnoticed number-unit decoupling设计
数值与单位的耦合错误在提交前难以被用户察觉
别名: 数值单位脱节 · stale unit · 改了单位没改数
概念解释
数字和它的单位是一对。改了其中一侧、另一侧还停在旧状态,人很难在提交前发现:币种从人民币切到美元但 100 还在,长度从厘米切到英寸但 175 还在。数值—单位脱节(unnoticed number-unit decoupling)说的是这对耦合在界面上没有被当成一个对象来维护,错误看起来仍「像一个合法量」。它管的是两侧是否还指同一量,不是第一次该显示哪种货币或哪套尺子,也不是逗号怎么解析。
机制
人把「100 元」编码成一个量,不是两个独立字段。界面却常做成数字框 + 单位下拉。改下拉只改标签,数字没变,新标签配旧数字在局部仍合法——100 美元、175 英寸都是能通过类型检查的值。没有换算、没有「单位已改、请确认数字」的断裂信号,校对通道是静的。自动填充、草稿恢复、来回切换单位时最容易留下这种半新半旧的对。发现通常发生在下游:收款、物流、医疗剂量,代价已经不可逆。
边界
单位只读、用户从未切换时,脱节不会发生。切换时若立刻按规则换算数字,耦合保持,但必须让换算可见,否则人会以为数字被「乱改」。科学计数、百分比与绝对量之间的切换同样是耦合问题。两个独立的量(长和宽)各带单位,改一个不应换算另一个。
怎么落地
- 把数字与单位当成一次提交的一个量:改单位就换算数字,或清空数字并要求重填,不要静默留旧数。
- 单位变化后在数字旁给出对照(「已从 175 cm 换为 69 in」),让断裂被看见。
- 草稿恢复时同时恢复当时的单位,不要用当前默认单位去配旧数字。
- 验证:填一个量,只改单位不改数,看提交值。数量级若按新单位解释变得荒唐而界面仍开着绿灯,脱节就还没被抓住。再恢复一份旧草稿,看单位是否还是当年那一个。