正视UI设计——读【软件观念革命】【三】

【不要打扰你的用户】

用户使用软件,是希望通过软件达到他需要的目标。但有时候我们会自觉不自觉的逼迫他了解一些实现细节。对于这些细节,用户并没有足够的兴趣,那只会打扰他们,引起他们的不解、恐慌或愤怒。

非模态反馈是一种避免打扰和惊吓用户的方式。当软件系统有必要的内容需要告诉用户的时候,非模态反馈是系统在对用户述说,用户只需要合适的聆听而不需要不停的回答。而传统模态对话框不是这样的,那是系统在向用户质问,用户必须不厌其烦的回答,否则不允许进行接下来的操作。见过最无趣的软件就是我们学校登录网络所用的工具,噼里啪啦依次弹出五六个对话框,告诉你诸如你的IP是什么,他们网站是什么之类的垃圾信息,每次你都必须也只能够点一下确定。我充分的相信,它起的唯一的作用是让你上网之前有一个糟糕的心情,以至于你很惊讶上网原来是可以调节心情的。

状态栏信息,Loading的进度条等等都是非模态反馈。此外点击链接是发出嘀哒的声响,任务完成时的轻微闪动,也都属于非模态反馈,它们都满足在不影响你正常工作的时候告诉你你可能需要的信息。

详细讲述非模态反馈前,我们需要了解一下其前身,模态的对话框。我们将传统的对话框分成四类:属性对话框、功能对话框、进度对话框和公告对话框。属性对话框向用户提供呈现所选对象的属性或设置,并允许用户进行改变,比如字体对话框;功能对话框通常从菜单打开,控制某项单个功能,比如插入图片对话框;进度对话框是向用户表明程序执行某种内部功能的进度的对话框,比如复制文件的对话框;公告对话框是系统用来告知用户某项信息的对话框,是由系统激发而不是用户激发的(比如前面看到的那个垃圾软件弹出的所有对话框...)。只有设计良好的属性对话框和功能对话框才是用户真正需要的对话框(因为他们都是被用户激发的),而进度对话框在很多时候可以用非模态反馈取代,比如Gmail上面的loading提示框,它最大的优势在于,允许你在系统完成某项工作时正常操作并可以打断这种执行,传统的对话框,最多只能通过简单的取消了提供。而最后一项公告对话框是最被滥用也是最需要被用非模态反馈来灭绝的对话框类型。想一下,我们曾今用了多少公告对话框来告诉我们的用户“数据更新完毕”,“输入数据类型不匹配”之类的信息。这些其实都可以用非模态反馈代替,从而减轻用户的心理压力(当你用鼠标或键盘操作某个软件时,它总弹出各式各样的公告对话框,你不会觉得有点心惊肉跳吗?)和操作压力(这个不用我说了吧,如果你感觉不到,每天上网前去点五个无聊的对话框吧)。

当然有时候你会很不屑,你觉得关闭Word文档时弹出的那个提示保存的告示对话框就很好,它无数次拯救了粗心的你。如果没有那个对话框,系统无论是存还是不存都可能无法满足善变的你。但如果你用了Google Docs你的观点可能就会有点改变,它采用非模态的反馈,它不会在你离开时质问你一下,而是会默认保存你对文档的修改,如果你要反悔,没关系,你几乎可以找到之前任意一个时间点的文档。之所以这种出色的模式没有被大多数本地文字处理软件采用,是由于你会非常不愿意一个1M的文档在你机器上占有了100M空间,并且其中绝大部分是不会被使用的(但如果是存放在服务器上呢?我想你一定不会介意的)。

这就是我想说的一个关键问题(下面是我的看法,请准备板砖),书上有句话说重要的改变必须比原来的好,按我的理解,这就是说你对界面的实现需要遵循你用户的使用习惯,除非你十分有把握让你的用户感到惊喜,否则不要轻易改变原有的方式,即使它真的很烂。就像Windows把“关闭”选项放入了“开始”的菜单,按正常人的思维这简直是不可理喻了,但多少年来所有用户都把这种无理当成了习惯,如果MS真的要把“关闭”移出“开始”菜单,需要好好考虑下办公室的窗户了。所以,我们的设计需要在我们用户原有的使用习惯上进行优化,剔除掉一些让人无法忍受的,改变一些十分繁琐的。优化的程度和实现的成本、开发的进度、用户的特点、新界面的易用性都有关系。我想,这才是非童话世界中设计界面的基本前提。

 

【区分对待你的用户】

除了纷繁的对话框是打扰你用户的罪魁祸首,对不同级别用户提供相同的交互方式也是让你的用户烦躁的一个重量级原因。我们需要为新手,中间用户和专家提供不同的交互方式。

命令向量工作集是两个重要的概念。命令向量是允许用户向程序发起指令的特殊技术:菜单、工具条、快捷键都属于这个范畴。仔细想象一下用菜单,和用工具条控件或快捷键完成同一个任务。菜单很直观,具有引导性,但操作繁琐,需要多次点击和滑动鼠标,它属于教学向量;工具条控件和快捷键操作非常简单,只需要点一下鼠标或键盘,但需要熟悉或记忆,它属于直接向量。显然,教学向量适合新手,直接向量适合中间用户和专家。一个优秀的软件要同时提供强大的教学向量和精确的直接向量,并且很好的区分二者,保证教学向量不会干扰到直接向量。在软件中我们会使用很多提示的信息,比如在鼠标停留或经过工具栏时,会有Tooltip、状态栏信息等,这些信息在中间用户出现遗忘的时候可以起到很好的提示作用并且不会打扰到正常使用工具栏,保证了工具栏直接向量的本色。但如果你采取很大的弹出气泡,提示对话框等手段进行提示的时候,直接向量就演变成了教学向量(因为干扰了视觉甚至需要额外的交互),请一定要保证它只会在使用初期或用户选择不再显示前,做为教学向量出现。否则,你的软件就丧失了直接向量,也就走上了摒弃中间用户的不归路。

除了设计满足不同需求的命令向量,还要使界面贴近用户的工作集。所谓工作集就是指中间用户记住了的命令和功能子集。初始的界面应该为大部分中间用户的最小工作合集提供直接向量(比如Word文档中的打开、保存等都是默认就在工具栏上的,他们是几乎每个中间用户都会使用的功能),然而随着用户的使用,不同的用户的工作集就会出现很大的区别。比如一个天天用Word写诗的诗人(估计没前途了...)只是一些基本的缩进、字体操作就好,而一个天天用Word做报表的写手,肯定需要对表格制作非常熟悉。一个优秀的软件,应该很容易改变它所默认提供的直接向量,以匹配用户的工作集。这种匹配可以通过用户定制(工具栏)、自动记忆(上次操作)等手段实现,但无论如何,需要把握好一点,直接向量不是越多越好(教学向量?全一点挺好),因为他们需要用户记忆(记快捷键,记工具栏图标...),太多了就影响了操作的效率(所以把菜单中所有选项都放在工具栏上,是一个比较失败的选择)。直接向量的量,最好是不多不少正好满足用户工作需求。

 

【正确引导你的用户】

至此,你的软件可以很好的满足用户日常需求了,但这还不足够好。它还需要很好的引导用户,帮助他们能够尽可能的少犯错误。要做到这一点,首先你不能够要求用户完成超出它们能力的操作,比如在安装的时候要求用户选择用什么串口,在第一次运行程序的时候让用户从一堆纷繁的模版中选择一个(书上提这点应该加一个前提,就是安装和安装完成第一次使用该软件的人应该都是新手,而不是重新进行安装中间用户或是专家,虽没有做过调查,评感觉有些质疑),这种问题对于一个刚刚使用用户来说太难了,一种更好的方式是默认一种行为(连问都不要问),等用户熟悉软件后(升级成为中间用户或专家)可以通过操作来更改默认的行为,这样就可以避免他们在一无所知的时候犯下重大错误。

然后你还需要用丰富的信息和非模态反馈进行提醒,同时还需要提供最为准确的交互方式。什么叫更为准确的交互方式?一个例子,当你让用户输入月份的时候,使用下拉框比使用输入框就更为准确。所有的交互设计,都应该是以避免用户犯错为前提,而不是以实现的简单性为前提。等用户犯了错误再提示,这样会打击你用户使用的信心。这一点说起来容易做起来难,有时候是意识不到,有时候是嫌麻烦。但只要条件(老板+心情+工期)允许,请仔细考虑一下你提供的所有交互控件(特别是输入控件)是否是最为准确的了,很可能你的一点小改进能使用户获得成倍的爽感。

 

【原谅你的用户】

人非圣贤孰能无过,不论你使用何种方式,都可能避免不了用户犯错(这种错误不一定是程序的问题,而是用户使用时喝得有点高了)。也许你不需要为了用户犯的所有错误羞愧,但如果你能及时扮演一下动感超人之类的伟岸角色,会使得用户对你的软件更为爱不释手。

原谅的方式也有很多种,你可以更正用户的错误,比如用户输入的内容违反了格式,你可以帮他改进成合法格式,并偷偷的告诉他;你也可以加入提醒功能,在用户可能是犯了错误的地方标识一下,比如Word的提示拼写错误功能;当然最常用的还是撤销和重做功能,一个有些悖于心智模型却红的发紫的功能(这和LYC不一样,它红不是莫名的红,而是真的有超能力...)。

但做好一个撤销重做功能并不是一个简单的事。你要考虑撤销和重做的深度,要考虑是在对所用操作有效还是一部分操作有效,要考虑是分部分撤销还是统一撤销。我见过最爽的,是VS2005的撤销功能,不但有无限的撤销深度,还以文件为单位划分了撤销重做的有效区域。曾今有次狂修改N小时代码,结果发现大部分的修改都是不好的,很多文件都需要回到最开始的状态。没有备份?没关系,一顿Ctrl+Z之后,整个世界又回到了过去美好的时光。你让我除了轻吻屏幕还能做什么呢?

posted on 2007-06-03 01:51  duguguiyu  阅读(1457)  评论(1编辑  收藏  举报

导航