B3.11.6Golden Rules设计
允许轻松逆转操作
别名: 可逆操作 · 撤销 · 黄金法则
概念解释
允许轻松逆转操作(easy reversal)要求可逆动作提供低摩擦的撤销、重做、取消、恢复默认或返回上一状态;不可逆动作则要明确标注,并用预览、延迟、确认和补偿减少误承诺。逆转的对象是状态与后果,不只是界面上的画面。
机制
可逆性降低了尝试的心理成本,让用户敢于探索而不必每一步都过度确认——这个效果成立的前提是系统内部真的存在一个可以干净回滚的状态模型。一旦动作已经把后果外部化——邮件已送达对方服务器、支付已经清算、webhook 已经通知了第三方系统——"撤销"就不再是把状态倒带回去,而变成了发起一次补偿性操作,这是完全不同的工程问题:补偿可能失败、可能只补偿了一部分、也可能和后续操作产生竞态。也就是说,界面上一个看起来一样的"撤销"按钮,背后可能是两种性质完全不同的机制,用户无法从按钮外观分辨。
边界
延迟发送式的撤销(点击后有几秒缓冲期)只在缓冲期内、且外部效果尚未真正传播出去时才成立——邮件一旦被对方服务器接收,"撤回"请求大概率会失败,因为对方系统已经完成了投递,己方再无法控制。给一个实际上过了某个时间点就不可逆的操作提供"撤销"这个可见入口,比完全不提供撤销更危险:它会让用户产生错误的安全感,从而做出更冒进的操作决定,一旦补偿失败,损失比原本就知道不可逆时更大。长历史、大对象和多人协作编辑还有性能与责任上限:批量撤销可能牵扯到别人在此期间做出的修改,谁的版本优先需要在设计时就定义清楚,而不是留给撤销逻辑临时判断。
怎么落地
- 给每个动作标注真实的可逆性等级——是可以干净回滚的状态撤销,还是需要补偿的外部效果——并只在前者上使用"撤销"这个词。
- 提供撤销提示与历史面板,批量操作支持整批撤销并显示对象数;对补偿类操作改用"申请撤回"并明确告知成功率不是100%。
- 不可逆动作提供预览、试运行、延迟执行、通知和恢复窗口,缓冲期结束前给出清晰的倒计时而不是让用户误以为随时能撤销。
- 测试操作-撤销-重做-刷新,以及并发编辑后的状态一致性,特别是撤销请求跨越缓冲期边界时的行为。