R1.01.3hardcoded value bypass设计

直接使用原始值会绕过体系

别名: 硬编码色值 · magic number · 绕过令牌 · raw hex

概念解释

在组件里直接写下 #1677FF13px、或从截图里抄来的阴影,等于在令牌图之外另开一份私藏。硬编码绕过(hardcoded value bypass)不是审美口味,而是第二份真相:管道、主题生成和审计都走令牌图,走不到这处字面量。界面看起来还在用同一套库,决定已经漏出去了。

绕过发生在调用点,和「令牌有没有分层」是两件事。分层再完整,字面量仍能从旁边溜走。

机制

令牌管道只能更新它拥有的节点。字面量从来不是节点,所以换主题、改密度、扫一遍「还有谁在用这档蓝」,全都扫不到它。它会在视觉回归里以「只有这一处没跟上」的方式露面,排查时却搜不到令牌名,只能搜十六进制——而同一十六进制可能在合法的原始值文件里也出现,误报和漏报纠缠在一起。

绕过还会自我复制:后来的人在邻近组件里看到这个字面量,会当成「实际在用的值」继续抄。令牌源于是变成文档,真正生效的是散落的拷贝。体系的失败模式不是没人写令牌,而是写了却拦不住调用点另走门。

边界

第三方嵌入、浏览器默认样式、CSS reset 里的值,本来就不在你们的令牌图上,不叫绕过。令牌集尚未建立时的原型可以暂时写字面量,但进入主分支前要收编。数据可视化里按数值连续映射的色标,有时必须用计算色而不是角色令牌,那是刻意的离系,需要标出来,不能和随手贴的 hex 混为一谈。邮件客户端若无法解析自定义属性,构建期展开后的字面量是产物,不是源码里的绕过。

怎么落地

  • 在产品样式和组件文件上启用字面量检查:十六进制、裸像素、裸字号只允许出现在原始值令牌文件里。
  • 把例外写成显式允许名单(第三方选择器、可视化色标),禁止用注释「先这样」长期豁免。
  • 换一个语义色之后跑视觉对比,把「仅个别页面未变」的截图标成绕过嫌疑。
  • 验证:全库搜索 # 和未包裹在令牌函数里的 px;每一处命中要么在允许名单里,要么改成语义名。允许名单外仍有命中,就是体系被绕开。

延伸

  • 同组R1.01.1 令牌把设计决定变为可分发的命名值 · R1.01.2 语义令牌与原始值令牌需分层 · R1.01.4 主题切换依赖语义层而非数值层
  • 相邻R1.18 采用率与合规度量 · R1.09 令牌的层级与语义化
  • 站内检索hardcoded value bypass · magic number · token lint

同组卡片

快捷操作

分享

分享当前页面

ios_share

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