很多系统把错误处理理解为一条写得更清楚的提示:用户提交失败后,告诉他哪里不对。这当然比没有反馈更好,但它仍然发生在错误之后。更好的设计会向前移动,在动作发生之前就帮助用户理解可能性和后果。
让可执行的动作可见#
当界面只展示结果、不展示状态,用户只能靠猜测采取下一步。清晰的可见性意味着:当前处于什么阶段,可以做什么,哪些动作暂时不可用,以及完成后会发生什么。
禁用一个按钮时说明原因,比点击后弹出错误更有效;在输入过程中显示格式要求,比提交后列出一长串问题更友好。信息出现得越接近决策时刻,越容易真正影响行为。
用约束缩小错误空间#
好的约束不是限制用户,而是移除没有意义的选择。日期控件不提供不存在的日期,危险操作与日常操作保持足够距离,互斥选项不会被同时选中。系统通过结构表达规则,用户就不必把所有规则记在脑中。
这类设计也降低了说明文档的负担。能够从界面自然推断的行为,比写在帮助页面里的要求更可靠。
反馈必须及时且可解释#
动作之后,系统需要迅速确认它是否被接收、正在处理还是已经完成。只有动画而没有状态含义,会让等待更焦虑;只有“失败”而没有恢复路径,也不能帮助用户继续。
有效反馈至少回答三个问题:发生了什么,为什么发生,接下来能做什么。对于可恢复错误,应尽量保留已经完成的输入,让修正比重来更省力。
把错误视为系统信息#
如果许多用户在同一位置犯错,问题通常不只是“用户不够仔细”。重复错误是在告诉设计者:系统提供的线索与人的预期不一致。统计错误出现的位置、前一步动作和恢复方式,比单纯增加警告更能找到根因。
好设计不是让人永不犯错,而是减少不必要的错误,并让不可避免的错误容易发现、容易理解、容易恢复。它在错误发生之前就开始工作。