R1.05.2dual-version consistency collapse设计

多版本并存会瓦解一致性

别名: 双版本并存 · 两套按钮 · version skew · 并存瓦解

概念解释

产品里同时跑着旧按钮和新按钮,表面上像平滑过渡,实际上已经没有「按钮」这一件东西。两套 API、两套焦点行为、两套主题挂钩,使用方按自己的升级速度各拿各的。双版本并存(dual-version)一旦没有硬边界,就会从战术变成架构:一致性不是慢慢跟上,而是被两套语法同时教坏。

它针对的是野外同时可进口的两份实现,不是「破坏要有路径」,也不是「废弃要写日期」。路径和日期都可以很漂亮,只要两份实现无限期共存,人仍然学不会哪一份才算数。

机制

一致性依赖「同一名字指向同一份合同」。导入路径一分成 pkg/buttonpkg/button-next,合同就裂了。团队为了赶发布会停在旧的上;另一团队为了用新槽位会切到新的。两套在页面上相遇——对话框用新的,页脚用旧的——间距、圆角、禁用的焦点处理开始分叉。设计师看全站走查时无法判断偏差来自实现错误还是版本差,走查成本翻倍,结论却更弱。

并存还会污染贡献:缺陷要不要两头修、新变体要不要两头加。维护者通常只修新的,旧的带着已知缺陷继续被高流量页面引用,于是「官方」看起来像一套,用户碰到的是带伤的那套。没有退役压力的并存不是桥梁,是永久的双轨。

边界

有意的长期双轨(稳定通道与实验通道、桌面包与移动包)如果名字、文档和安装入口从第一天就分开,那是产品线划分,不是同一按钮的两个年纪。构建期把旧导出编译成新实现的单份产物,运行时只有一份,也不算并存。第三方插件钉死旧主版本、产品自己无法改它的依赖时,并存是外部约束,要在边界上隔离(插件沙箱),不能让它和主应用的新按钮在同一层 DOM 里混排。演示环境和文档站为了对照故意并排渲染,必须标成对照,不能当产品模板复制。

怎么落地

  • 给并存设上限:第二份实现只允许作为带期限的导入路径存在,主文档和脚手架只示范一份。
  • 主应用禁止在同一页面树里同时导入新旧;构建或 lint 碰到混用就失败。
  • 缺陷修复默认打在将被留下的那一份,旧份只接安全补丁,并在变更说明里写明「此缺陷不修旧份」。
  • 验证:全库搜索该组件的导入路径,统计还在用的不同实现数。主应用里大于一,一致性已经在裂。把混用页并排截图,间距和焦点差应能追到两套合同,而不是「有人写错了样式」。

延伸

  • 同组R1.05.1 破坏性变更需要迁移路径 · R1.05.3 废弃需要明确的时间表
  • 相邻R1.13 版本管理与迁移成本 · R1.18 采用率与合规度量
  • 站内检索dual-version consistency collapse · version skew · button-next

同组卡片

快捷操作

分享

分享当前页面

ios_share

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