A10.02.9Reversibility of mode-error consequences设计

模式错误造成的后果必须可回退

别名: 模式错误可回退性 · undo for mode errors · recoverable mode error

概念解释

指示、准模式、无模式设计、超时退出、门槛匹配,这些手段全部作用于降低模式错误发生的概率,没有一种能把概率降到零——只要系统里还存在哪怕一个持久性模式,用户判断出错的可能性就始终大于零。这条leaf处理的是概率降不到零之后剩下的问题:既然模式错误无法被彻底消灭,设计就必须保证它一旦发生,造成的后果是可以被撤回、恢复到发生之前状态的,而不是依赖预防手段单独扛起全部责任。

机制

预防类手段(指示、门槛、超时)全部作用在错误发生之前,它们能做的只是压低发生概率,但只要存在一个非零的概率乘以足够多次的操作,长期来看误判事件必然会出现——这是概率的必然结果,不是某次预防设计没做好。如果系统只依赖预防、完全不提供事后的回退手段,那么这个必然会出现的误判事件,其后果就会被系统实实在在地承受下来,无法挽回。把可回退性作为兜底,本质上是承认"预防有极限"这个前提,并且专门为极限之外的那部分残余风险准备一条退路,让整条防线从"单点依赖预防"变成"预防加兜底"的两层结构。

边界

可回退性作为兜底手段,只对那些操作代价可被承受的模式错误有效——如果误判触发的动作本身消耗了不可再生的资源(例如向外部系统发出了一次不可撤回的请求,或者动作发生的瞬间就已经造成了物理世界里的后果),事后的"回退"在技术上根本不存在对应操作,兜底也就失效。对这类模式,唯一的出路是把预防端的门槛设得比一般情况更高,因为兜底这条退路本来就不可用。

怎么落地

对每一个已识别的模式点,在设计预防手段的同时,单独追问一句"如果预防全部失效,这次误判的后果能不能被撤回";能撤回的,确保撤回入口足够显眼、操作足够简单、不需要用户记住额外的撤回路径;不能撤回的,把这个模式点标记为高优先级,优先加固预防端的门槛与指示,而不是像其他模式点一样只做常规水平的预防。验证办法:对每个模式点做一次"最坏情况演练"——假设预防手段全部失效,用户已经做出了误判下的动作,实际操作一遍看能否把系统恢复到误判发生前的状态,以及恢复所需的步骤数与时间;恢复不了或步骤过多的,回到预防端追加门槛强度。

延伸

  • 同组A10.02.6 模式的空闲超时自动退出 · A10.02.7 模式切换的显式程度与其后果相称
  • 相邻A10.08 错误容忍与优雅降级
  • 站内检索undo · recoverability · error tolerance

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/A10.02.9