程式师的使用介面设计手册第五章:一致性及其他怪东西

作者:周思博(Joel Spolsky)
译:Paul May 梅普华
Saturday, April 22, 2000 A part of Joel on Software, http://www.joelonsoftware.com

Microsoft Office中的主要软体Word和Excel,都是在微软内部从无到有开发出来的,而其他软体则是从外界公司买进来的,特别是FrontPage(向Vermeer买的)和Visio(向Visio买的)。那这两个程式有什么共通点呢?答案是他们在原始设计上就是要像Microsoft Office的应用程式。

决定要模拟Office的使用介面,并不只是要「讨好」微软或是打算把公司卖出去那么单纯;事实上开发FrontPage的Charles Ferguson绝不会犹豫承认他对微软的厌恶;他一再地_请求_ 司法部对Redmond巨兽_做些处置_ (直到他把公司卖给微软,之后他的立场变得复杂多了)。事实上Vermeer和Visio抄袭Office的使用介面,主要原因似乎是为了方便:照抄比起重新发明轮子更容易更快速。

微软的事业群程式经理Mike Mathieu从Vermeer的网站下载FrontPage试用,发现这个程式和Word非常像。由于程式与他所_期望_ 的动作非常像,所以使用起来更加容易。而这种易用度让他马上对这个程式有非常好的印象。

而当某个程式能立刻让微软有很好的印象时,他们就会掏出一亿五千万美元。你的目标或许没那么大;只是希望客户喜欢然后掏出大概39美元吧。不过想法却都是一样的:一致性会 产生 容易使用的感觉,然后会_产生_ 好感觉,最后就能赚更多钱。

一致性对人们学习使用各种软体的帮助无法低估。在图形化使用介面出现之前,每个程式都会重新发明一套很基本的使用介面。甚至连「离开」这种每个程式_必备_ 的单纯操作都完全无法一致。那时候大家至少都会背下常见程式的离开命令,这样才能跳出原有程式去跑自己要的东西。Emacs迷会背":q!"(只记这个)以防自己卡在vi里出不去,而vi使用者则是背"Cx Cc"(Emacs甚至自有一套控制字元的表示法)。在DOS时代,如果键盘上不套一个蠢胶片提醒Alt+Ctrl+F3怎么用,根本没办法_使用_ WordPerfect。我只记得可以按F7离开。

影响还不只这样,即使是像预设打字行为(覆盖或插入)这样微小的不一致也会让你_受不了_ 。我很习惯按Ctrl+Z,这在Windows程式里是表示「还原」。可是在用Emacs时就常常会不小心按到而把视窗最小化(也是按Ctrl+Z)。(有趣的是Emacs用Ctrl+Z当 最小化 的原因正是为了与烂使用介面csh (UNIX的C shell)一致)这就是那些加起来让人不快乐的微细挫折之一。

再举个更细微的例子,Pico和Emacs都用Ctrl+K删除一行文字,不过两者的行为有着_些许_ 不同。这个小差异却常常让我在Pico里的文件乱掉。我敢保证这种经验你自己也有一堆。

在麦金塔早期Microsoft Windows还没出现的年代,狂热的Apple支持者会对每个人说,一般而言Mac使用者比DOS用户能运用更多的程式完成工作。我不记得确实的数字了,不过我相信大概是说一般DOS用户会用一两个程式,而Mac使用者会用 12 个程式。理由是说由于Mac的软体操作的方式都一样,所以在Mac上很容易学会用新程式。

一致性是良好使用介面设计的基本原则,不过它也只是「让程式模式符合使用者模型」公理的推论结果之一,因为使用者模型可能会反映使用者看到其他程式的行为。如果使用者学到连按两下表示 选取单字 ,他们拿到从未看过的新程式时,也会猜测选取单字的方法就是连按两下。所以现在的程式_最好_ 在使用者连按两下时选取单字(而不是做其他动作,比如到字典里查被点到的字),否则就会有可使用性的问题。

既然一致性的好处如此_显著_ ,为什么我还要浪费你我的时间去强调呢?问题在于外头有股黑暗势力在反对一致性,而且设计者和程式员的天性就是创新。

我很不愿意告诉你「不要创新」,问题是要让使用介面容易使用,就得把创意放在别的地方。在大部份的使用设计案例中,你在从头设计前绝对要先看看其他热门程式怎么做,并且尽可能的模拟它们。如果你在制作某种文件编辑程式,最好能长得和Microsoft Word一模一样,连功能表里相同项目的快速键都照抄。有些使用者可能习惯按Ctrl+S存档,有些人可能习惯用Alt+F,S,而其他人可能会按Alt,F,S(先放开Alt键)。还会有一类使用者会去程式左上方区域找磁片图示去按。这四种方法最好都能用,否则使用者就会遇到他们不想要的结果。

我看过有些公司的管理阶层很自豪的说,他们_故意_ 把东西做得和微软不同。他们会夸耀说「只是因为微软这样做,并不表示这是对的」,然后去建立一套没有依据,而且与大家习惯不同的使用介面。在你开始高唱「只是因为微软这样做,并不表示这是对的」的咒语之前,请先考虑两件事:

1. 假设微软的作法真的不对,可是他们已经在Word,Excel,Windows,或Internet Explorer这些普遍的软体上这样做了,所以数百万人都会_认为_ 这是对的(至少也会认为这样做正常),而且他们会假设你的程式也会这样做。虽然你可能认为(显示和Netscape 6.0的工程师一样)Alt+左键不适合作为「上一页」的快速键,可是外头有好几百万人都会试着按Alt+左键回到上一页,所以如果你为了某些信仰理由(比尔盖茨是个很邪恶的大法师)而不这样做,那么你只是为了满足自己的虚荣而毫无理由地毁掉自己的程式,而且使用者也不会因而感谢你的。
2. 另外就是别那么确定他们是错的。微软在可使用性测试上花的钱比你多,他们还有累积几百万通电话支援服务的详细统计资料,另外也很有可能是因为较多人指出要这样做,微软的人才会这样做。

要制作一个具有好用使用介面的优良程式,你得把自己的信仰留在家里。微软可能不是唯一要抄的对象:如果你正在制作一个线上书店,可能也得确定你的网站至少在意思上和Amazon一样。Amazon会把你的购物车资料保留90天。你可能认为自己绝顶聪明,所以24小时后就把资料清掉了。当Amazon的客户把资料暂存在你的购物车内,他们会认为过两星期回来购物车内的资料应该还在。如果你24小时后就把资料清掉,就会损失一个顾客了。

如果你正在制作一个针对绘图专业人士的高阶相片编辑器,我确信你的使用者中有90%都知道Adobe Photoshop,所以你最好让程式在功能重叠部份表现得非常像Photoshop。如果不这样做,大家会说你的很难用,虽然_你自己_ 觉得它比Photoshop容易,这就是因为你的程式的运作与_使用者_ 的期望不同。

另外还有一种常见的倾向,就是重新发明Windows所附的共用控制元件。Netscape 6就不用提了。有一阵子你光看外表就知道是某个程式是用Borland的C++编译器写的,因为上面有巨大的OK按钮和超大型核示框。不过这还没有Kai’s Photo Soap那么糟糕:

Quit_Soap.gif

没错,这东西的确是漂亮的很,不过O上面跨条线(其实是「不」的意思)会让我想到"OK",而Windows的标准是把OK放在左边,所以我时常会按错钮。这样用漂亮符号取代"OK"及"Cancel"只有一个好处,就是夸耀你多有 创意 。如果人们因为Kai的创意而出错,那没啥问题,那只是为了突显某位_艺术家_ 所必须付出的代价。(这个「对话框」还有另一个问题,就是没有标准的标题列,无法把对话框移开。所以如果对话框挡到某些回答所需资讯时就惨了。)

有个酷又漂亮的使用介面好处很多。像Kai这样优良的绘图设计非常讨喜,能吸引人来用你的程式。个中诀窍在于_不要_ 违反规则。你可以稍微改变对话框的视觉外观,不过不要影响功能。

当Juno的第一版出来时,有个标准的登入对话框提示你输入姓名和密码。当你输入姓名之后,应该按TAB键跳到密码栏输入密码

当时Juno有个发神经病的程式经理,他用UNIX的经验比用Windows多很多,所以他习惯输入姓名后按ENTER键(不是TAB键)跳到密码栏。当你写一个针对一般Windows使用者的程式时,UNIX程式员可能并 不能 代表一般使用者,可是这个经理却非常坚持按ENTER键要跳到下一个栏位而不是执行Windows标准的「确定」动作。他尖叫着说:「只是因为微软这样做,并不表示这是对的。」

所以程式员花了很多很多时间,绕过Windows预设行为写出了非常复杂的对话框处理程式。(要做得与众不同,几乎一定会比依照平台规矩去做花_更多_ 的工夫)。这段程式成为很大的维护梦魇;我们由16位元移到32位元视窗时移植得很不顺。它没有照大家的期望运作。而当新的程式员加入团体时,都无法理解为什么会有这么奇怪的对话框处理。

还有很多程式员试图重新制作各种常用的Windows控制元件,由按钮,卷轴,工具列到功能表(Microsoft Office团队最喜欢重做的东西)什么都有。Netscape 6.0最夸张,它把每个共用的Windows控制元件都重做了。这样通常都会有些无法预见的坏处。最好的例子就是编辑框。如果你重新写一个编辑框,可能会有很多你根本没听过的东西(如中文编辑附加工具,还有支援由右至左文字的双向版Windows)都不能用了,因为它们不认得你写的非标准编辑框。有些记者在检视Netscape 6.0的抢鲜版时,就注意到URL输入框(运用Netscape自制的非标准编辑框)不支援标准编辑控制元件功能,无法按右键叫出内容功能表。

和反微软的基本教义派或创意绘图设计师争论时,他们常常会错用爱默生的话:「一致是渺小心智的妖魅…」。正确的句子是「 愚蠢 的一致是渺小心智的妖魅。」好的使用介面设计者会明智地运用一致性,虽然这样无法夸耀他们的创意,从长远来看却会让使用者更快乐。

bullet.gif 下一章:[为节省大家的麻烦所作的设计](/wiki/The_Joel_on_Software_Translation_Project:%E4%BD%BF%E7%94%A8%E4%BB%8B%E9%9D%A2%E8%A8%AD %E8%A8%88%E6%89%8B%E5%86%8A%E7%AC%AC%E5%85%AD%E7%AB%A0 “The Joel on Software Translation Project:使用介面设计手册第六章”)

这些网页的内容为表达个人意见。
All contents Copyright 1999-2002 by Joel Spolsky。All Rights Reserved.