1.6 “以白痴的言行停止进行”
向用户展示程序的错误信息,绝对算得上程序员设计用户界面时最薄弱的环节。就在今天,我在撰写本章之余浏览了CNN.com网站主页,想把它保存到我的硬盘上去。我在Web浏览器的菜单中选择“文件”|“保存”。这个时候出现了一个显示这个操作的进度的对话框:5%已完成;15%已完成;等等,直到99%已完成。这时候进度对话框突然不见了,弹出了如图1-4所示的窗口。

图1-4 十足愚蠢的对话框
这个窗口是出自一个十足的笨蛋之手的杰作。为什么不能保存这个页面,我能够做些什么才能纠正这个错误?是因为页面内容受保护的缘故吗?就像一些职业艺术家的网站有时候采取的保护措施样。还是因为服务器不可访问?如果操作不能成功的话,为什么进度条会到达99%?进度对话框告诉我已经保存了99%,这些内容存放在什么地方?虽然不是100%那么完美,但是总比什么也没有强。进度对话框为什么不见了?错误提示说明页面不能保存到所选择的存放位置,那么是否能够保存到其他某个地方?如果是这样的话,应该放在哪里?我怎么知道是否可以存放在哪里?如果不能的话,为什么这个对话框提到“存放位置”?浏览器已经成功地向我显示了这个页面,也正因为如此我才会去保存这个页面。为什么不能保存浏览器所显示的内容呢?对话框没有告诉我到底如何找出问题所在,或者到哪里了解更多的信息。此外,它却只给出了一个让我能够响应的“确定(OK)”按钮。但对于我而言,我并没有什么可以“确定”的东西,这个保存页面的操作并没有成功执行,而且程序并没有向我解释失败的原因。这个对话框的标题“保存网页错误(Error Saving Web Page)”甚至也有问题。我并没有做错什么。我只是做了程序允许我做的事情。在程序不能保存我的页面时,它犯了第1个错误,而它不能解释错误的原因则是它犯下的第2个错误。只用了寥寥数字就引出了这么多的疑惑,这实在算得上我所见到的“idoicy(笨蛋)”们“最伟大的”作品。
我们前面曾经提到过一位用户界面设计专家艾伦·库珀,他将这种情况称为“以白痴的言行停止进行(stopping the proceedings with idiocy)”,这是一句很好的短语,只是它没有使用我发明的那个单词拼写(idoicy)。如果我真的不能保存这个页面,浏览器应该知道这个结果,应该阻止我尝试保存,并向我解释原因,理想情况下不应该再在我面前弹出一个愚蠢的对话框。在我浏览这个页面的时候,或许可以将菜单项“保存”变灰,或者将菜单项的文字改成“禁止保存/受保护内容”,这样用户就知道是怎么回事及其原因。如果不能保存完整的页面,它应该尽其所能地保存可以保存的内容,并通知我哪些内容没有保存下来,再次声明,不要再让用户去单击那些愚蠢的对话框。在被保存下来的那部分页面中,或许可以在那些未被保存下来的地方放置一些占位符,如果没有找到某项被请求的页面元素,在浏览器显示页面中给出一个小的红叉。
通过仔细查找背后的原因,最终我找到了发生上面保存失败的原因所在。我曾经设置浏览器屏蔽掉一些讨厌的特定类型的内容。浏览器在屏幕上显示为空白区域,这些地方曾经大量出现一些愚蠢的浮动广告(dancing advertisement)。(另一章将专门讨论浮动广告。)当程序在保存网页的时候,遇到页面中的这些部分,发现内容被屏蔽了,它并不会像程序显示页面时那样忽略掉这些内容。相反,它不会尽其可能保存页面内容,而会被这些已屏蔽内容阻塞,导致整个保存进程都中止了,并以我刚才描述过的白痴言行让活动停止。
当您碰到这么一个让人费解的对话框时,您怎么不会觉得自己是个傻瓜?要知道这并不是用户的过错,而是程序员未能尽到他的职责。要明白任何一个用户都没必要去理解这样一个愚蠢的沟通方式。想象自己用双手卡住这名程序员的脖子,用膝盖猛击他的裤裆。建议您按照本章的后面以及本书最后一章中所推荐的方式行动起来。





