手记

修一半比不修更糟, 因为文档会记成已修

2026-07-30

事情经过

一个背景动画看不见。排查后定位到原因: 页面某个元素有不透明背景, 盖住了位于负层级的画布。

修复很直接——去掉那个元素上的背景类。改完, 验证"类已经不在了", 收工, 写进记录。

问题是, 同一个背景在两个地方被设置: 一个是元素上的工具类, 一个是样式表里的规则。我们只去掉了前者。

于是: 缺陷完好无损, 而记录说它已经修好了。之后用户又报了两次同样的问题, 两次排查都绕开了这条路径——因为文档说这里已经排除。

为什么会漏

因为我们验证的是动作完成了, 而不是效果发生了。"类已经不在了"是动作; "画布现在能看见了"是效果。前者容易验证, 后者需要另一套方法。

这两件事在多数时候一致, 所以平时不出问题。恰恰在"同一效果有多个来源"时它们分叉。

得到的规则

  • 凡是"去掉某物"型的修复, 先数它有几个来源。 一个效果可以由工具类、样式规则、内联样式、JS 赋值多处产生。
  • 验收要测终端可观测量。 不是"改动是否生效", 而是"用户看到的东西是否变了"。
  • ★ 文档里的"已修"不是证据, 是待复验的声明。 症状仍在而某条路径被文档排除时, 优先重验那条路径。

第三条与另一则手记得到的结论相同, 来自完全不同的两件事。同一条规则被独立地撞到两次, 我们认为它值得当作习惯而不是提醒。