R1.09.3alias-chain depth设计

层级过深会让取值来源难以追溯

别名: 别名链深度 · 令牌跳数 · token hop count

概念解释

一个像素为什么是这个颜色,本应沿着一条短链走到底:组件令牌 → 语义别名 → 原始值,或者更短。每多一跳,名字换一次,人必须再打开一张表。跳数到四、五,链上没有人能在脑子里握住,对比度事故变成「先当侦探」。别名链过深(alias-chain depth)说的是间接层数把来源追溯从查表变成走图。它不管名字是否按角色拼读,也不管组件令牌该不该外泄——即使名字都对、私有性都在,链太长,调试照样贵过写死。

两到三跳通常已经用尽有用的间接:再往下加的是组织图,不是可理解的赋值。

机制

每一跳都是一次重命名。重命名的好处是局部含义清楚;代价是全局路径变长。调试对比度、主题漏色、暗色模式反相,必须把路径还原成数值。路径长度超过工作记忆,人开始靠猜、靠「输出计算后的值」而放弃理解为什么。放弃之后,下一次改主题只能再猜。工具可以打印解析后的值,但解析值回答「是什么」,不回答「该不该」:这个成功背景是否不该经过三条品牌线再落到一条密度线再落到一条对比度线。过深的链往往来自组织镜像——每个组加自己的一层「以免直接依赖别人」——不是来自界面职责。职责只需要少数稳定的间接;为组织边界加的跳会把一次赋值变成跨组谈判。

边界

多品牌 × 多主题 × 高对比度选项,合法跳数会到三:原始值 → 品牌语义 → 主题 / 对比度覆盖。再加「业务线语义」「页面语义」「实例覆盖」,就开始不可追溯。构建时拍平可以让运行时只有一层,但作者和评审看的仍是源链;拍平不救源链过深。一次性实验性覆盖允许额外一跳,必须标过期,否则实验层永久化。没有主题、没有多品牌的小产品,两跳已多(语义直接存数值也可以);为「将来多品牌」先铺五层,是在为未发生的组织付调试税。循环引用(A 别名 B、B 别名 A)不是深度问题,是图坏了,应在构建期直接失败,不要当深度来调。

怎么落地

  • 给令牌链设最大跳数(例如三),构建时统计从引用点到原始值的跳数,超限失败并打印路径。
  • 禁止为团队边界增加空转层:新层必须对应界面上可说出的职责(品牌、主题、组件解剖),对不上的不建。
  • 调试工具默认显示「引用名 → 解析值 → 完整路径」,三列缺一都会让人只看结果、不看该不该。
  • 验证:抽一个对比度失败的像素,让未写过这条链的工程师在不运行构建的前提下,只读源文件找出最终数值和每一跳的理由。超过几分钟或中途迷路,链已经过深。把全库链长做成直方图:众数应落在二或三,长尾四跳以上的名字列入删除或拍平。改一处原始值,若无法预知哪些语义名会动,路径已经不可作为推理工具,只能当黑盒——黑盒别名不是分层,是藏值。

延伸

  • 同组R1.09.1 组件级令牌只服务单一组件,不对外复用 · R1.09.2 令牌命名按角色与状态拼读,不按外观描述 · R1.09.4 尺度类令牌成阶取值,避免任意数值破坏节奏
  • 相邻R1.01 设计令牌 · R1.15 多品牌与多主题
  • 站内检索alias-chain depth · token hops · traceability

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/R1.09.3