F5.13.2Token naming设计
色阶命名用数值序号而非语义词,避免语义随版本演变
别名: 色阶编号 · 100 到 900 · semantic stop names
概念解释
第一版把蓝的中档叫做 hover,把更深一档叫做 pressed。第二版悬停要更轻,有人把 hover 的色值改浅,有人另做 hoverSubtle,旧组件还指着已经不是悬停的那一档。色阶上的档应用序号(100、200、500)来叫;「悬停」是组件角色,绑在某一档上,但不要把角色写进档名。否则版本一演进,名字还在,意思已经跑了。
机制
序号是尺子上的刻度,不承诺用途。角色是用途,会随交互改。把用途写进档名,等于声称这一档永远干这件事。产品一改交互,要么改色值(所有引用了这个名字的地方一起变,包括不该变的),要么加新名字(表膨胀,旧名变成陷阱)。两种都是语义漂移。
角色仍需要名字——onPrimary、pressedFill——那是配对和组件层的事,指向某个序号。色阶层保持愚蠢:只说深浅位置。愚蠢的名字稳定,聪明的名字会过期。
边界
- 只有三档且永远不会加的功能色,叫 default / hover / pressed 也能活,但一旦要第四档,就要付出一次改名。小表可以赌,大表不要赌。
- 对外文档可以用「500 大约是默认填充」当口诀,口诀不是标识符。
- 改序号本身(把旧 500 改叫 400)同样是一次断裂,序号稳定也要靠发布纪律,不是数字魔法。
怎么落地
- 色阶标识只用数字或同等中性编号;状态名只出现在引用层。
- 禁止把
hover、error、muted写进色阶档名。 - 迁移时若必须改某档的用途,改引用,不改档名背后的观感位置。
- 验证办法:搜代码里的色阶标识,若能读出交互语义,就还没分开;应只能读出位置。