GUI可用设计,给F/OSS开发人员的快速指南(上)
By De Dream', Windy(http://www.DeDream.com),2005年1月
介绍
放眼望去,开源软件世界满是优秀的软件。事实上,计算机用户想要完成的任何任务都能找到高质量的F/OSS软件来完成,从文字处理到提供上网服务,等等。可是,这个软件阵营的大部分成员,都有那么一个小小的问题:它们实在可以再好用得多。专业的UI设计师告诉我们,在开发一个应用时,应该首先设计用户界面,而程序员不能进行这样的设计;他们说只能由专业的UI专家来设计,但OSS项目很难接触到这一类人,所以开源软件永远不可能做到真正好用。
不过这并不意味着我们应该放弃UI设计,而且从许多商业应用的UI质量来看,
在团队里拥有可用性专家也并不能保证好的界面。任何一名程序员的努力,知识和思考都可以大幅度地改进应用的可用性。我们也许只能找到一个局部最合适的设计,不能找到全局性的方案,但,就算是那样也是往正确的方向上迈进了一步。
经过几年同这类问题的艰苦斗争,我想自己可以写下短短的五点,就是我们OSS开发人员在设计GUI的时候应该考虑的五个地方。它们来自我使用和编写OSS软件的经验,以及在这个主题上,我读到的一些有趣的书和站点,它们列在引用部分――对任何有兴趣探讨可用性问题的开发人员来说,它们都是非常好的参考读物。
我特意只提到了这么几点,它们不需要多少工作量就能实现,也不存在什么争论。大一点的“整体应用”问题超出了这篇文章的范围。这些要点不是什么新鲜言论,也不会特别复杂,但它们会起到很好的作用。应该说明一下的是,在我使用的几个例子中,可以通过改变应用的设置来解决这些问题,但我决定只考虑默认的设置:也许,对他们的应用来说,默认设置代表了开发人员认为最可用的设计。
在开始之前,我可能应该再作一个声明(至少可以减轻即将看到的争论):尽管我可能对下面的某些应用言辞苛刻,但这只意味着一些建设性的批评,我每天都在使用这些应用,而且它们都是非常不错的产品,是全心投入的开发人员数年的艰苦劳动。所以我只是对潜在的改进提出一些建议,不代表对任何人的攻击。
要点
0)用户不是在使用你的软件
在所有计算机UI设计中最基本的理念就是,用户并不想使用你的软件,他们只想尽快,尽可能更容易地完成自己的工作,这些应用程序只是作为辅助的工具而已。越能把自己的软件排除出用户的视线之外越好。花在使用你的软件上的努力不是花在用户想要完成的工作上,两个来自Alan Cooper的第二本书,“About Face2.0”中的关键引用对这点总结得很好:
1.“把用户想象成非常聪明但非常忙的人”;
2.“不管你的界面有多酷,还是少一点好”。
1)费兹定律
这是最简单也最众所周知的UI设计定律,它认为屏幕上的对象越大,越靠近鼠标光标,就越容易点击。这是常识,但在UI设计中常常被完全忽视了。
图1:Firefox的工具条
例如,看看Firefox的默认工具条(图1),在网络浏览时,到目前为止任何人最常点击的按钮是Back(后退),因此,Back按钮应该是最容易点击的,那样的话,可以最小化用户使用软件时需要付出的努力,并让他们集中精力浏览网络。但在这个工具条上,五个按钮大小一样。Stop按钮真的和Back按钮一样重要吗?不,当然不是,更好的设计应该是象图2那样,这样,根据费兹定律,Back按钮更容易点击,也更容易和其他按钮区分开来。
图2,一种替代设计
控件的外观尺寸可以通过把它摆放在屏幕边缘来放大。当鼠标点击屏幕的边缘时,它可以准确地停在屏幕的边缘上,不管鼠标的移动有多快。这就意味着,对鼠标用户来说,屏幕边缘的对象有效地扩展到了屏幕之外无限远的地方。很容易能点击到屏幕右上角一个像素大小的目标;你只需把鼠标尽量往上往右“扔”过去就可以了。把这个像素移动到屏幕中央,要点中它就困难得多。从这一点可以看到,我们想要更容易点击到的控件应该放在屏幕的边缘或角落里。
图3:Metacity窗口外观,留意按钮周围的无效边框
一个最简单的例子是所有窗口的管理按钮(关闭,最大化,等等),它们必须容易点击,那样对窗口的控制不会需要太高的精度。从它们在所有软件中顶端角落的位置来看,这些是最适合移动到角落里的控件,然而很少有窗口管理器这样做:大部分的Metacity窗口没有,XFCE4也没有。要做到这一点,只需要把这些按钮往上往右移动一个像素,让用户可以看都不看就关闭窗口。
图4:滚动条,一个像素的缝隙
另一个例子是滚动条。在最大化的时候,我桌面大部分的应用都把右边的滚动条边缘放在离屏幕一个像素远的位置,把从右边点击一个无限方框的潜在简易程度,缩减到一个小小的10个像素宽的小框,每次想要滚动的时候都要额外多花几秒钟来点击它。
总结:
1,让常用的控件更大,更容易辨别;
2,使用屏幕的边缘和角落,让控件有效扩大;
3,永远不要把控件放在离屏幕边缘或角落一个像素远的地方
2)不必要的干扰
当用户正在工作的时候,他们把注意力集中在手头的工作上。每次他们不得不把注意力移向应用程序时,需要花些时间才能回到刚才被打断的位置。因此,你的应用程序应该尽量减少打断和干扰用户的次数。每个程序都有它重点关注的地方――在文本编辑器里,就是文本,在网络浏览器里,就是网页,因此要把它当成界面的重点。
关于这个问题的例子是确认和进度对话框,Evolution,例如,每次在我点击“Send/Receive”的时候都弹出一个对话框,告诉我它在检查邮件的进度。这个对话框恰恰挡在正在接收的邮件之前,阻止了对程序其余部分的访问。这个对话框想要达到什么样的目标?它所做的就是挡住了用户的视线。去掉它,用一个状态条上的进度表来代替可能会好得多。
图5:gEdit里面的查找对话框
一个更糟糕的例子是KDE的默认Trashcan行为,把文件放到Trash里面是一个很容易反转的动作,用户可能在一行里头要做好几次,如果动作很容易恢复的话,为什么还要强迫用户每次都去点击“OK”按钮?如果你想提醒用户文件已经放到垃圾箱里面的事实,可以播放某些动画,不要在每次这样简单的动作上都放置一个路障,它只能惹怒用户,让他们停下来,盲目地在对话框上点击“OK”。
另一个例子是文本编辑器的搜索功能中无所不在的“Text not found”对话框。如果输入搜索框的文本没有找到,最有可能是我输入错误的字符串,并且现在想要编辑和重新搜索,但现在有个对话框带着“OK”按钮挡在路上,所以在进行下一步之前我不得不点击去掉它。这样就令人厌烦,需要用户额外的工作。好一点的例子是Firefox的查找对话框,当查找不到时,它用红色表示。
图6:从显示的情况来看,在Slashdot里头没有Monkey
总结:
1,不要给用户设置路障
2,只在包含有用信息的时候弹出对话框
3,尽可能使用无模式(non-modal)状态指示
---------------------------------------------------
相关阅读:
GUI可用设计,给F/OSS开发人员的快速指南(下)
----------------------------------------------------
关于作者
我是一个自由软件拥护者,也是SiEd的主要开发人员,SiEd是一个GPL许可的文本编辑器,用于Palm操作系统的设备;在现实生活中,我正在Imperial College,读Centre for Process Systems Engineering的博士,我的邮件地址:ben@benroe.nospam.com。
Windy 发表于2004年12月14日
引用记录:
本文引用地址:
http://www.dedream.com/cgi-bin/mt-tb.cgi/49
下面是引用了本文的地址:GUI可用设计,给F/OSS开发人员的快速指南(上):
» GUI可用设计,给F/OSS开发人员的快速指南(上) 来自 徐小东's Blog
作者:[url=http://benroe.com/files/gui.html]Benjamin Roe[/url]
翻译:[url=http://www.dedream.com/research/archives/2004/09/ecde_dreama.html]Windy[/url]
[b]介绍[/b]
放眼望去,开源软件世界满是优秀的软件。事实上,计算机... [Read More]
于July 1, 2005 09:47 AM
评论
注:这两篇文章虽然讲的是开源软件,但对其他软件开发人员来说也很有帮助,请注意这些常见的界面设计问题。
Windy 发表于 December 15, 2004 10:40 PM
非常好的文章,平中出奇,醍醐灌顶!
linuxuser 发表于 March 5, 2005 05:01 PM
非常经典,我喜欢这样的文章,谢谢Windy的奉献!
goooder 发表于 June 4, 2005 06:28 PM
:)不客气,这些都是很实用的原则
Windy 发表于 January 8, 2006 11:36 AM