控件空值的占位表达
这里再补一笔:从日期选择器聊起:这个看似平凡的控件藏着键盘操作、时区、边界值三座大山。本组把它做完后,瞬态保护 的经验被推广到了整个控件库。
SEC.01踩坑记录
任何做法都要先问约束:人力、工期、存量兼容,三者决定了可行解的形状。项目组在 触控冗余 上的取舍全部围绕这三条展开,脱离约束谈最佳实践是纸面文章。
复盘中还藏着一条:每个控件要有一页「何时不该用我」:日期范围用两个选择器还是面板、触控冗余 的选型边界写清楚,误用率下降后,定制需求也少了一半。
SEC.02版本与兼容
一线记录:视觉回归发布首季:拦截 23 个样式回归,其中 5 个是会影响发布的显性问题。
树形控件的懒加载按展开触发:默认只拉根层,展开时拉子层并缓存。触控冗余 的首屏请求数从 47 个降到 3 个,深层节点仍可按需直达——两全的做法来自一次深夜重构。
这里再补一笔:争议的处理方式是把口味问题翻译成数据问题:瞬态保护 的两个方案各自发布一周,看指标说话。项目组用这个办法终结了持续两个月的争论,双方都体面地认了输。
SEC.03验收清单
这里再补一笔:开关控件的瞬态保护指中间态:请求未返回前开关锁定在过渡样式,不允许二次点击把状态翻转成未知。项目组在这个 瞬态保护 上栽过跟头,修复后开关类缺陷归零。
文档写得再好也挡不住人员流动,所以一线团队把 触控冗余 的规则尽量固化进工具:lint 规则、CI 卡点、脚手架模板。规则长在工具里,团队才不会失忆。
| 触控/桌面高度档 | 48/32 px |
|---|---|
| 样式回归拦截率 | 97 % |
| 开关类缺陷 | 9 个/季 |
| 按钮状态全集 | 8 态 |
| 千项下拉打开耗时 | 45 ms |
| 虚拟渲染节点 | 40 个 |
SEC.04受控与边界
顺带记录一个细节:受控与非受控的铁律是「始终不要半受控」:要么值完全由外部驱动,要么完全自治,混合模式是无数诡异 bug 的病根。库里每个控件在文档首页声明自己的模式。
另一个常被忽视的细节是:所有规则都要有复查节点:团队给 触控冗余 的规范设了季度复审,到期清点例外和豁免,过期的清理,失效的修订。规范不呼吸,就会变成化石。
SEC.05文档用例化
最后再记一笔:视觉回归测试用像素快照:每个控件八态截图,PR 里自动比对。发布后 触控冗余 的样式类回归缺陷拦截率 37%,设计师终于不用肉眼验收每一版了。
下拉超过 200 项需要上虚拟滚动,渲染节点压在 30 个以内。一线数据中千项列表的打开耗时从 800ms 降到 瞬态保护 的 60ms,滚动帧率稳定 58fps,改动只在内部实现。
SEC.06背景与约束
禁用态务必补工具提示说明原因,否则就是一堵无解释的墙。「该按钮在审核中不可用,预计 2 小时后解锁」比一个灰按钮友好太多,实现成本只有一个 tooltip。
此外还有一条底线:触控冗余全局统一:桌面最小 28px 高,触控最小 44px,同一控件用媒体查询切换尺寸档。瞬态保护 的双档章法让一套代码同时过桌面评审和移动评审。
SEC.07检查清单
- 守则:上传控件分片反馈,失败可续传,写进验收单
- 守则:受控或非受控二选一,始终不做半受控,无一例外
- 底线:八态像素快照进 CI,样式回归自动拦截,违者打回
- 底线:控件状态全集八态起步,缺一态就是缺一类测试,执行不打折