先停手,把这次练习的目标收窄成一个可比较的问题,再决定保留哪一处改动。改动过多时,最有效的做法不是继续叠加,而是把页面复制成两份,只让其中一份保留新改动,另一份回到改动前状态,然后用同一组检查项对比。这样得到的差异才能归因到具体改动,而不是时间、缓存或环境变化。下面以你手里正在练的那个页面为对象,逐步给出可执行方案。
如果改动涉及结构、样式、脚本和内容四个方向,直接对比会得到一堆互相干扰的结果。此时有两种成立的做法:回退到单变量,或拆成两轮练习。回退适合你还能记清改动顺序、且页面只有一份的情况;拆轮适合改动已经写进多个文件、回退成本高于重新搭一个最小页面的情况。判断依据不是改了多少行,而是你能否说清每一处改动对应哪个观察目标。只要有一处改动你说不出它要验证什么,就应优先回退,而不是继续加检查项。
具体动作:把当前页面另存为 page-b.html,再把改动前的版本恢复为 page-a.html。两份都放在同一目录,用同一浏览器、同一网络、同一时间窗口打开。若你改动的是标题层级,就让 A 保持旧层级、B 只改层级,其他样式和脚本完全一致。结果如何影响下一步:如果两份在检查项上出现差异,你才能把差异归到标题层级;如果没有差异,说明这项改动在当前条件下不产生可观察影响,下一步应换一个更具体的观察目标,而不是继续扩大改动范围。
假设你在练一个三页站点,原本导航是纵向列表,你一次改成了横向、加了图标、又换了字体。此时不要直接比较“新版是否更好”。把 B 版只保留横向排列,图标和字体回到 A 版。检查项设为:键盘 Tab 顺序、窄屏下是否换行、点击区域是否重叠。若 B 版在窄屏换行而 A 版不换行,差异就指向横向排列本身,而不是图标或字体。这个结论只在这个假设条件下成立,换一种导航项数量,结果可能不同。
检查项要能在两份页面上重复执行。建议至少包含:页面标题是否唯一、主要区域是否可键盘到达、窄屏下是否出现横向滚动、控制台是否有报错。每项只记录“通过/不通过/无法判断”,不写“感觉更顺”。无法判断的项要单独列出,它往往说明你的观察条件还不一致,比如两份页面用了不同缓存状态。此时下一步不是改页面,而是先统一打开方式,再重跑一次。
两种做法各有代价。回退的代价是你要重新确认改动前状态,如果之前没有保存副本,可能要靠记忆重建;拆轮的代价是你要多花一轮时间搭最小页面,但换来的是每轮只验证一件事。选择条件可以这样定:若你还能在十分钟内恢复改动前版本,选回退;若恢复成本明显高于新建一个最小页面,选拆轮。不要因为“已经改了这么多”就拒绝回退,改动量本身不是保留理由。
最小页面只保留与本次问题直接相关的部分。例如你要验证的是表单提交后的提示位置,就只留表单和提示容器,去掉导航、页脚和装饰样式。这样做的结果是:下一轮你可以只改提示位置,而不用再次面对整页干扰。若最小页面仍然无法复现问题,说明问题可能不在你改的那一处,而在更早的环境或数据状态,这时应转向检查环境,而不是继续拆页面。
记录格式建议为:改动对象、保留变量、检查项、观察结果、下一步。例如“改动对象:导航排列;保留变量:仅横向排列;检查项:窄屏横向滚动;结果:B 版出现横向滚动,A 版没有;下一步:在 B 版上只调整容器宽度,再与 A 版比较”。这样写的好处是,下次你遇到类似改动时,能直接判断是否需要重复这组条件,而不是重新凭印象试一遍。请记住,一次改动过多时,重新设计可比较过程的核心不是减少改动数量,而是让每一轮只回答一个问题。