[转]三.人机接口设计 1人机接口设计准则

来源:互联网 发布:安卓数据访问 编辑:程序博客网 时间:2024/04/30 10:18

人机接口设计

Human Interface Design

Good product design incorporates a number of timeless principles for human-computer interaction. This chapter presents these principles for your consideration as you design your product. It also points out what to consider for worldwide compatibility and universal access.

一个好的产品设计往往遵守了很多人机交互的准则。本章将向您具体讲述这些准则以供您设计产品时参考,同时也指出了世界范围内的兼容性和通用存取要注意的问题。

For detailed information on specific user interface components and how to assemble them in your own Aqua-compliant user interface, see the chapters in Part III, “The Aqua Interface.”

关于用户接口特定组件以及怎样将它们集成到您的Aqua用户接口中的具体信息,请参考第三部分的章节, “Aqua用户接口。”

  • Human Interface Design Principles
    人机接口设计准则
  • Keep Your Users in Mind
    时刻为用户着想
  • Extending the Interface
    扩展用户接口

人机接口设计准则

Human Interface Design Principles

目录

[隐藏]

  • 1 隐喻 Metaphors
  • 2 反映用户的心智模型 Reflect the User’s Mental Model
  • 3 隐式和显式操作 Explicit and Implied Actions
  • 4 直接操作 Direct Manipulation
  • 5 用户控制一切 User Control
  • 6 反馈和交互 Feedback and Communication
  • 7 一致性 Consistency
  • 8 所见即所得 WYSIWYG (What You See Is What You Get)
  • 9 容错性 Forgiveness
  • 10 感知的稳定性 Perceived Stability
  • 11 整体美学 Aesthetic Integrity
  • 12 避免“模式” Modelessness
  • 13 管理程序的复杂性 Managing Complexity in Your Software

This section presents some key principles critical to the design of elegant, efficient, intuitive, and Aqua-compliant user interfaces. Sometimes overlooked by developers, these principles are as relevant today as when Apple first published them decades ago. In fact, they drive the design of the Mac OS X user interface.

本节将向您介绍一些对于设计高雅,高效,直观的Aqua接口来说很重要的准则。即使是现在回过头来看,这些准则仍然像几十年前Apple发布它们的时候一样有效。实际上,它们引导着Mac OS X用户接口设计。

隐喻

Metaphors

Take advantage of people’s knowledge of the world by using metaphors to convey concepts and features of your application. Metaphors are the building blocks in the user’s mental model of a task. Use metaphors that represent concrete, familiar ideas, and make the metaphors obvious, so that users can apply a set of expectations to the computer environment. For example, Mac OS X uses the metaphor of file folders for storing documents; people can organize their hard disks in a way that is analogous to the way they organize file cabinets. Other metaphor examples include iTunes playlists and iPhoto albums, which represent real-world music playlists and photo albums. A Dashboard widget can also be a metaphor for the task it performs because it instantly conveys its purpose to the user. (For Dashboard widget design guidelines, see “Dashboard.”)

尽量使用隐喻来描述程序的概念和功能,这样可以利用一些已有的概念和知识。隐喻是用户心智模型中一个工作流的基础单位。使用隐喻来描述具体的熟悉的想法,从而使得用户有一个对计算机环境的假设。例如, Mac OS X使用隐喻文件夹来表示文件的存储;人们可以像管理真正的文件一样来管理硬盘上的数据。其它的隐喻还有像iTunes播放列表和iPhone专辑,对应着现实世界中的音乐播放列表和照片专辑。Dashboard的小工具也是其对应功能的隐喻,因为它能够立即将自己的目的表达给用户(关于Dashboard小工具设计指南,请参考 “Dashboard。”)。

Metaphors should suggest a use for a particular element, but that use doesn’t have to limit the implementation of the metaphor. It is important to strike a balance between the metaphor’s suggested use and the computer’s ability to support and extend the metaphor. For example, the number of items a user puts in the Trash is not limited to the number of items a physical wastebasket could hold.

隐喻对特定界面元素的使用方法提供了建议,但是这种使用不一定限制了隐喻的实现。在隐喻建议的使用方法和计算机的能力之间取得平衡是很重要的事情。例如,在现实中垃圾框所能容纳的物品数量不会对用户扔到垃圾箱的文件数量构成限制。

反映用户的心智模型

Reflect the User’s Mental Model

The user already has a mental model that describes the task your software is enabling. This model arises from a combination of real-world experiences, experience with other software, and with computers in general. For example, users have real-world experience writing and mailing letters and most users have used email applications to write and send email. Based on this, a user has a conceptual model of this task that includes certain expectations, such as the ability to create a new letter, select a recipient, and send the letter. An email application that ignores the user’s mental model and does not meet at least some of the user’s expectations would be difficult and even unpleasant to use. This is because such an application imposes an unfamiliar conceptual model on its users instead of building on the knowledge and experiences those users already have.

对于您的软件所完成的工作流,用户已经有了相应的心智模型来描述。该模型源自于现实世界的经验,使用其他软件的经验,以及计算机的一般知识。例如,用户在现实中会写信和寄信,并且大部分用户使用过电子邮件程序写邮件和发邮件。基于这点,用户会对期望的工作流有一个概念模型,例如能够创建一封新的信件,能够选择收件人,能够发送邮件等。一个无视用户心智模型且不能满足用户最低期望的电子邮件程序是难于使用的,用户也不乐于使用,因为程序把用户不熟悉的概念模型强加于用户。

Before you design your application’s user interface, try to discover your users’ mental model of the task your application helps them perform. Be aware of the model’s inherent metaphors, which represent conceptual components of the task. In the letter-writing example, the metaphors include letters, mail boxes, and envelopes. In the mental model of a task related to photography, the metaphors include photographs, cameras, and albums. Strive to reflect the user’s expectations of task components, organization, and workflow in your window layout, menu and toolbar organization, and use of panels.

在设计您的程序的用户接口之前,您应该试着了解您的产品所针对方向的用户心智模型,并认识到模型内在的隐喻,这些隐喻表达了您的软件所针对方向上的一些概念性组件。在上面的那个写信的例子中,有信,邮箱,信封等隐喻。在摄影的心智模型中,有拍照,相机和专辑等隐喻。努力通过窗口布局,菜单和工具栏的组织结构,以及面板的使用来反映用户预期的概念组件,组织结构,工作流等。

A good example of how reflecting the appropriate mental model results in a clean, intuitive user interface is the iTunes application. Apple designed iTunes to reflect the mental models people associate with playing music and managing their music collections. In an uncluttered window, iTunes displays individual songs, playlists, and playback and search controls in a song-centric arrangement. The largest pane displays a list of songs, clearly sortable by categories such as title, artist, and album. The smaller pane displays the playlists and collections, which control the list of songs currently displayed, just as the disk and folder icons in the Finder sidebar control the display of files, folders, and applications. The prominent playback controls look like similar controls on radios, CD players, and the iPod. The search field is identical to the search field in Finder, Mail, and countless other Aqua-compliant applications. Because the iTunes user interface reflects a well-defined mental model, instead of forcing users to adopt unfamiliar concepts, even novice users find iTunes intuitive and easy to use.

反映合适的心智模型可以创建一个整洁而直观的用户接口程序,一个很好的例子是iTunes程序。Apple设计的iTunes反映了那些经常播放音乐和管理他们的音乐库的人的心智模型。iTunes在一个排列窗口中以歌曲为中心显示了歌曲,播放列表,回放以及搜索等控件。最大的面板显示的是歌曲的列表,清楚的按照歌曲名,艺术家和专辑等排序。小一些面板显示播放列表和音乐库,控制哪些歌曲会显示在歌曲列表中,就像Finder侧边栏中磁盘和文件夹的图标控制哪些文件,文件夹,应用程序会在Finder中显示一样。最为注目的播放控件看起来和收音机,CD播放器以及iPod上的控制器很像。搜索的区域和Finder,Mail,以及无数其他Aqua应用程序一致。因为iTunes的用户接口反映了一个经过良好定义的心智模型,而不是强迫用户来适应不熟悉的概念,即使是新用户也觉得iTunes直观易用。

The mental model your users have should infuse the design of your application’s user interface. It should inform the layout of your application’s windows, the selection and organization of icons and controls in the toolbars, and the functionality of panels. In addition, you should support the user’s mental model by striving to incorporate the following characteristics:

用户的心智模型应该在产品的用户接口的设计中体现出来,主要体现在应用程序窗口的布局,工具栏上图标和控件的选择和组织,以及面板的功能等。此外,您还应该注意如下要点:

  • Familiarity. The user’s mental model is based primarily on experience. When possible, enhance user interface components to reflect the model’s symbology and display labels that use the model’s terminology. Then, where appropriate, use familiar Mac OS X user interface components to offer standard functionality, such as searching and navigating hierarchical sets of data.
熟悉程度。用户的心智模型主要基于经验。尽可能的使用心智模型的符号和术语来描述用户接口的组件。然后,在适当的时候使用用户熟悉的Mac OS X标准组件来提供一些标准功能,例如搜索和层状数据的导航。
As described above, the iTunes application displays playback controls that use well-known symbols users associate with play, pause, and rewind. Then, to offer searching and help, for example, iTunes uses standard Aqua user interface components. A Mac OS X user automatically knows how to use such standard user interface elements, regardless of the application in which they appear.
正如上面所描述的,iTunes使用用户熟悉的符号来显示播放,暂停,回放等控制功能,并使用标准的Aqua用户组件来提供搜索和帮助功能,这样Mac OS X的用户无论在哪个应用程序中都能够自动知道如何使用这些标准的接口元素。
  • Simplicity. A mental model of a task is typically streamlined and focused on the fundamental components of the task. Although there may be myriad optional details associated with a given task, the basic components should not have to compete with the details for the user’s attention.
简单程度。心智模型通常专注于并高效化工作流的基础组件。尽管对于一个工作流来说可能有大量的可选细节,但是这些细节不应喧宾夺主。
In the iTunes application, for example, the basic task components of playing songs, selecting playlists, and searching are prominently featured. However, these are supplemented by easily accessible menu items and controls that perform additional tasks, such as ejecting a disk, shuffling a playlist, and displaying song artwork.
例如,在iTunes应用程序中,播放歌曲,选择播放列表和搜索功能位于最显眼的位置。然而,通过菜单项和控件还有一些其他很方便的功能,如弹出光盘,对播放列表随机播放以及显示歌曲的专辑封面等。
  • Availability. A corollary of simplicity is availability. An uncluttered user interface is essential, but the availability of certain key features and settings the user needs is equally so. Avoid hiding such components too deeply in submenus or making them accessible only from a contextual menu.
可用性。简单的下一步就是可用。一个整洁的用户接口是基础,但是用户需要的关键功能和设置同样重要。避免将这些重要组件隐藏在过深层次的子菜单中或者只出现在某些上下文菜单中。
The iCal application, for example, has commands for subscribing to a new calendar and for publishing a calendar in the Calendar menu. These tasks are easily accessible, but are not so frequently performed that they warrant dedicated controls on the application’s main window.
例如,iCal应用程序,订阅和发布日历的功能直接位于日历菜单下面。用户可以很轻松的找到并使用这些功能,但是使用的频率还不足以把它们放到程序的主窗口上。
  • Discoverability. Encourage your users to discover functionality by providing cues about how to use user interface elements. If an element is clickable, for example, it must appear that way, or a user may never try clicking it. Be sure to use Aqua controls properly and avoid making controls invisible to inexperienced users.
可发现性。用户界面元素上应提供线索来让用户发现软件的功能。如果一个控件是可以点击的,那么它看起来就必须象可点击的,否则用户永远不会试图去点击它。确保合适的使用Aqua控件以避免让没有经验的用户找不到控件。
Aqua buttons, for example, appear three-dimensional, enhancing their resemblance to buttons users see on physical devices. Well-designed toolbar icons make the commands they portray recognizable to users. This familiarity gives users the confidence to explore the functionality of a new application.
例如,Aqua按钮看起来象是立体的,和现实设备上的按钮很像。经过良好定义的工具栏图标让其对应的命令对用户来说更熟悉。这种熟悉让用户可以自信的尝试软件的功能。
Don’t discourage discovery by making actions difficult to reverse or recover from. For more information on this, see “Forgiveness.”
操作结果很难恢复会让尝试的用户有挫败感。更多信息请参考“容错性.”。

隐式和显式操作

Explicit and Implied Actions

Each Mac OS X operation involves the manipulation of an object using an action. In the first step of this manipulation, the user sees the desired object onscreen. In the second step, the user selects or designates that object. In the final step, the user performs an action, either using a menu command or by direct manipulation of the object with the mouse or other device. This leads to two paradigms for manipulating objects: explicit and implied actions.

每一个Mac OS X上的功能都牵涉到对对象的操作。 操作的第一步,用户在屏幕上看到所期望的对象。第二步,用户选择或者标识出该对象。最后,用户进行操作,或者通过菜单命令,或者直接通过鼠标或其他设备。这导致了对象两种操作的样式:显示的和隐式的。

Explicit actions clearly state the result of manipulating an object. For example, menus list the commands that can be performed on the currently selected object. The name of the menu command clearly indicates what the action is and the current state of the command (dimmed or enabled) indicates whether that action is valid in the current context. Explicit actions do not require the user to memorize the commands that can be performed on a given object.

显示的操作清楚的表明了对一个对象操作的结果。例如,菜单列出了可以在选定的对象上执行的操作。菜单项的名字清楚的说明了该操作的内容以及在当前上下文的状态是否可用(是否变灰)。显示的操作不需要用户记住这些操作。

Implied actions convey the result of an action through visual cues or context. A drag-and-drop operation is a common example of an implied action. Dragging one object onto another object constitutes a relationship between the objects and an action to be performed by the drag operation. For example, dragging a file icon to the Trash implies the imminent removal of the underlying file from the file system. For implied actions to be apparent, the user must be able to recognize the objects involved, the manipulation to be performed, and the consequences of the action.

隐式的操作通过一些可视化的线索或者上下文来表达结果。一个典型的例子就是拖拽。将一个对象拖到另外一个对象上在对象和拖拽动作间构成了一种联系。例如,将一个文件图标拖到垃圾箱暗示着当前文件即将从文件系统中删除。显而易见地,对于隐式操作来说,用户必须能够了解选择的对象,进行的操作,以及操作的顺序。

Keep these two paradigms in mind as you design your user interface. Examine the user’s mental model of your application’s task to help you determine when each type of action is appropriate. For example, Automator supports implied actions when the user drags actions into the workflow pane, creating relationships between them. Automator conveys these relationships by displaying connection points between actions, warning of potentially undesirable consequences, and suggesting types of input and output. When it requires the user to provide specific information, however, Automator supports explicit actions with the display of checkboxes and editable text fields.

在设计您的用户接口时要把这两种操作样式时刻放在心上。检查用户的心智模型从而决定哪种操作对于您的程序来说是更合适的。例如,在Automator中,用户将操作拖入工作流的面板时,Automator会自动在它们之间创建关联。Automator通过在操作之间显示连接点来表示这些关联,对可能不合理的操作流程给出警告,并且给出输入输出类型的建议。然而,当Automator需要用户提供某些具体信息时,它通过选择框和可编辑的文本框来显示一些显式的操作。

直接操作

Direct Manipulation

Direct manipulation is an example of an implied action that allows users to feel that they are controlling the objects represented by the computer. According to this principle, an onscreen object should remain visible while a user performs an action on it, and the impact of the action should be immediately visible. For example, with a drag-and-drop operation (the most common example of direct manipulation) users can move a file by dragging its icon from one location to another, or drag selected text directly into another document. Other examples of direct manipulation are the resizing of a graphic object in a drawing application and the positioning of an object or camera view in a three-dimensional scene.

直接操作是隐式操作的一种,它会让用户觉得可以直接控制计算机显示的对象。基于这个原则,屏幕上的对象在用户操作时必须一直可见,并且操作的结果也必须立即显示出来。例如,用户可以在拖拽操作(最常见的直接操作)中通过将一个文件的图标移到另外一个位置来移动文件,或者直接将选定的文字拖到另外一个文档中。其他的一些直接操作的例子如在画图类的程序中调整图像的大小,在三维场景中移动对象和视角等。

Support direct manipulation when users are likely to expect it. Avoid forcing users to use controls to manipulate data. For example, an application that manages a virtual library might allow the user to drag a book icon onto a patron’s name to check it out. Such direct manipulation supports the user’s mental model of the task and is much more natural than opening a window, selecting a book title, selecting a patron name, and clicking a Check Out button. (For more information on the concept of a mental model, see “Reflect the User’s Mental Model.”)

在您的程序中支持直接操作,如果用户可能需要的话。避免强迫用户通过控件来操纵数据。例如,如果一个管理图书馆的程序应该允许用户直接将书的图标拖拽到顾客的名字上来表示借出。这种直接操作很好的反映了用户的心智模型,远比打开一个窗口,选择书的标题,选择顾客的名字,点击借出按钮来得更为自然(关于心智模型概念的更多信息,请参考“反映用户的心智模型。”)。

用户控制一切

User Control

Allow the user, not the computer, to initiate and control actions. Some applications attempt to assist the user by offering only those alternatives deemed good for the user or by protecting the user from having to make detailed decisions. Because this approach puts the computer, not the user, in control, it is best confined to parts of the user interface aimed at novice users. Provide the level of user control that is appropriate for your audience (see “Know Your Audience” for more information on ways to determine the audience for your application). For some suggestions on how to provide the appropriate level of detail in your user interface, see “Managing Complexity in Your Software.”

允许用户而不是计算机来启动和控制操作。某些程序试图通过仅仅提供那些被认为不错的选项或者避免用户做一些细节上决定来帮助用户。因为这种方式将计算机而不是用户放在主导地位,所以它最好限制在那些针对初学者的用户接口上。您应该为您的用户提供一些分级别的用户控制接口。(关于如何确定您的客户的方式的更多信息,请参考 了解您的客户”一节)。关于如何在您的产品中提供分级别的用户接口的一些细节上的建议,请参考 “管理您的软件的复杂度。”

The key is to provide users with the capabilities they need while helping them avoid dangerous, irreversible actions. For example, in situations where the user might destroy data accidentally, you should always provide a warning, but allow the user to proceed if they choose.

事情的关键是在帮助用户避免危险的,不可恢复的操作同时仍然提供给用户完全的能力。例如,当用户可能毁坏数据时,您可以弹出警告,但是如果用户仍然选择的话,允许用户继续操作。

反馈和交互

Feedback and Communication

Feedback and communication encompass far more than merely displaying alerts when something goes wrong. Instead, it involves keeping users informed about what’s happening by providing appropriate feedback and enabling communication with your application.

反馈和交互意味着通过合适的反馈以及和程序之间的交互从而让用户时刻知道现在发生了什么,而不仅仅是当事情出错时显示一个警告。

When a user initiates an action, always provide an indication that your application has received the user’s input and is operating on it. Users want to know that a command is being carried out. If a command can’t be carried out, they want to know why it can’t and what can be done instead. When used sparingly, animation is one of the best ways to show a user that a requested action is being carried out. For example, when a user clicks an icon in the Dock, the icon bounces to let the user know that the application is in the process of opening.

当用户初始化一个操作时,在程序中提示用户已经收到用户的指令,操作正在进行。用户想明确地知道操作正在被执行,如果没有,用户想知道为什么以及能做些什么。动画效果是告诉用户请求的操作正在被执行的最好方式。例如,当用户在Dock点击一个图标时,图标上下跳动从而让用户知道应用程序正在打开的过程中。

Often, you can use animation to make clear the relationships between objects and the consequences of actions. Mac OS X uses animation to subtly but clearly communicate with the user in many different ways, a few of which are listed here:

通常,您可以使用动画效果来让对象和操作的后果之间的关系更为清晰。Mac OS X利用动画效果巧妙而清晰的使用很多方式和用户沟通,其中的一些列出如下:

  • When a user minimizes a window, it doesn’t just disappear. Instead, it smoothly slips into the Dock, clearly telling the user where to find it again.
当用户最小化一个窗口时,窗口不是立即消失,而是平滑地滑入Dock,从而清楚的告诉用户可以在哪儿重新找回窗口。
  • To communicate the relationship between a sheet and a window, the sheet unfurls from the window’s title bar.
为了表示表单和窗口的关系,表单从所属窗口的标题栏下展开。
  • To emphasize the relationship between a drawer and a window, the drawer slides out from beneath the window, displaying shadowing that makes it look like a desk drawer.
为了强调抽屉窗口和所属窗口的关系,抽屉窗口从所属窗口的后面滑出,并有阴影效果让其看起来很像桌子抽屉。

You should consider using subtle animation effects such as these to enhance feedback in your user interface.

您应该考虑使用这些巧妙的动画效果来增强您的程序的反馈。

For potentially lengthy operations, use a progress indicator to provide useful information about how long the operation will take. Users don’t need to know precisely how many seconds an operation will take, but an estimate is helpful. For example, Mac OS X uses statements such as “about a minute remains” to indicate an approximate time frame. It can also be helpful to communicate the total number of steps needed to complete a task—for example, you might include text that says “Copying 30 of 850 files.”

对于可能时间较长的操作,使用进度条来来指示操作的进度。用户不需要精确的知道操作需要多少秒,但是最好有一个大概的估计。例如,Mac OS X使用“大概还有一分钟”这样的声明来描述一个大约的时间段。通知用户完成任务一共有多少步也是不错的方式─例如,您可能使用这样的文字描述“正在复制第30个文件,共850个”。

Note: A good reason to provide feedback during lengthy operations is that if your application fails to respond to events for 2 seconds, the system automatically displays the spinning wait cursor for your application. Users who see this cursor without any other feedback might think that your application is frozen and quit it using the Force Quit window.

注意:在长时间的操作中提供反馈一个很好的理由就是,如果您的程序2秒钟没有响应事件,系统会自动为您的程序显示繁忙的光标。如果用户看到这个光标而您的程序没有任何反馈的话,用户可能认为您的程序已经失去响应从而强制退出您的程序。

Provide direct, simple feedback that people can understand. For example, error messages should spell out exactly what situation caused the error (“There’s not enough space on that disk to save the document”) and possible actions the user can take to rectify it (“Try saving the document in another location”). For more information on how to compose useful alert messages, see “Writing Good Alert Messages.”

尽可能的提供简单直接的反馈以让用户看懂。例如,错误信息必须准确的描述导致出错的情况(“选定磁盘没有足够空间保存文档”)以及用户可以采取操作(“请试着将文档保存到其他位置”)。关于如何提供有用的警告消息的更多信息,请参考“编写良好的告警信息。”

If your application consists of a foreground process that displays a user interface and a background process that performs some or all of the application’s main tasks, take special care to conduct all communication with the user through the user interface of the foreground process. In particular, a background process should never display a dialog or window in which the user is required to change settings or supply information. If a background process must communicate with the user, it should start or bring forward the foreground application. This is important because the user may not know (or remember) that a background process is running and receiving communication from it would be confusing.

如果您的程序由一个前端显示用户接口的进程和一个后端执行程序操作的进程组成,特别要注意所有都交互都要通过前端进程的用户接口来进行。特别地,后端进程绝不应该显示一个对话框或者窗口来要求用户更改设置或者提供信息。如果一个后端程序必须和用户交互,它应该启动前端进程或者将消息转发给前端进程来进行。因为用户可能不知道(或者忘记了)有一个后端进程在运行,如果收到后端进程的交互请求会让用户很困惑。

For example, consider a backup application consisting of a foreground process that displays a user interface and a background process that performs the scheduled backups. The user starts the application, sets the backup frequency and provides the data and backup locations, and quits the application, secure in the knowledge that backups will proceed as scheduled. If, at some time in the future, the backup disk becomes full, the background process must tell the user immediately; otherwise, the user may lose data. To do this, the background process should start the application and cause its Dock icon to bounce. Drawing the user’s attention to a familiar application, instead of displaying an alert from an invisible process, prepares the user to receive the information and take appropriate action.

例如,一个备份的程序,由一个前端的显示用户接口的进程和一个后端的执行计划的备份任务的进程组成。用户启动这个程序,设置备份的频率并提供需要备份的数据以及备份的位置,然后退出程序,后端进程则按照计划继续运新。有时候,备份的磁盘可能满了,后端的进程必须立即通知用户,否则,用户可能丢失数据。这种情况下,后端进程应该启动备份程序前端进程,并让其在Dock上的图标上下跳动,从而引起用户的注意,并采取合适的操作,而不是在后端进程中弹出窗口显示一个警告。

Note: A background-only application (also called a faceless background application) is not associated with a user-visible application. When communication with a user is essential, a background-only application can display an alert describing the situation, but the alert should direct the user to open some other application (such as System Preferences) to handle the problem. For some information on background-only applications, see Runtime Configuration Guidelines and the sample Carbon application Folder Watching.

注意:一个仅工作在后台的应用程序(也叫无界面的后端程序)没有用户可见的接口。当需要和用户交互时,后台的应用程序可以显示一个告警窗口来描述当前的状态,但是这个窗口应该引导用户去打开其他的程序(例如系统偏好设置程序)来处理问题。关于后台程序的更多信息,参考运行时偏好设置指南以及Carbon的示例程序文件夹监测。

一致性

Consistency

Consistency in the interface allows users to transfer their knowledge and skills from one application to another. Use the standard elements of the Aqua interface to ensure consistency within your application and to benefit from consistency across applications. Ask yourself the following questions when thinking about consistency in your product:

在用户接口上的统一可以让用户使用从其他应用程序学到的知识和技巧。使用标准的Aqua界面元素可以确保程序用户接口的统一从而获得用户接口一致性带来的跨程序的好处。当您思考您的程序的用户接口一致性问题时,试着问自己下面的问题:

  • Is it consistent with Mac OS X standards? For example, does the application use the reserved and recommended keyboard equivalents (see “Keyboard Shortcuts Quick Reference”) for their correct purposes? Is it Aqua-compliant? Does it use the solutions to standard tasks Mac OS X provides? (For more information on these solutions, see “Using Mac OS X Technologies.”)
程序和Mac OS X的标准接口一致吗?例如,程序正确的使用了系统保留和推荐的键盘快捷键吗(参考“键盘快捷键快速参考”) 用户接口是Aqua的吗?使用了Mac OS X的标准解决方案吗?(关于这些解决方案的更多信息,请参考“使用Mac OS X技术。”)
  • Is it consistent within itself? Does it use consistent terminology for labels and features? Do icons mean the same thing every time they are used? Are concepts presented in similar ways across all modules? Are similar controls and other user interface elements located in similar places in windows and dialogs?
程序本身的用户接口是否统一?关于标签和功能是否使用了一致的术语?图标是否总是代表一个意思?所有的模块中概念都是以同样的方式呈现的吗?类似的控件和用户接口元素是否显示在窗口和对话框类似的位置?
  • Is it consistent with earlier versions of the product? Have the terms and meanings remained the same between releases? Are the fundamental concepts essentially unchanged?
程序的用户接口是否和以前版本的用户接口统一?不同版本间的术语和术语表示的意思是否一致?一些基本的概念是不是保持一致?
  • Is it consistent with people’s expectations? Does it meet the needs of the user without extraneous features? Does it conform to the user’s mental model? (For more information on this concept, see “Reflect the User’s Mental Model.”)
用户接口是否和用户期望的一致?用户接口是否满足了用户的需求?是否遵守了用户的心智模型?(关于心智模型的更多信息,请参考”反映用户的心智模型。”)

Meeting everyone’s expectations is the most difficult kind of consistency to achieve, especially if your product is likely to be used by an audience with a wide range of expertise. You can address this problem by carefully weighing the consistency issues in the context of your target audience and their needs. See “Know Your Audience” for more information on how to define your audience.

符合每个人的期望是很有难度的,尤其是您的产品的用户专业跨度非常大的时候。您需要针对目标客户的环境和需求进行仔细的权衡来解决这个问题。关于如何确定您的目标客户请参考“了解您的客户”。

所见即所得

WYSIWYG (What You See Is What You Get)

In applications in which users can format data for printing, publish to the web, or write to film, DVD, or other formats, make sure there are no significant differences between what users see onscreen and what they receive in the final output. When the user makes changes to a document, display the results immediately; the user shouldn’t have to wait for the final output or make mental calculations about how the document will look later. Use a preview function if necessary.

用户应该可以找到程序的所有功能。不要因为操作没有在菜单中显示而导致某些功能被隐藏。菜单应该显示所有操作列表,这样用户不需要试图去记住那些操作的名字。避免提供一些只能通过工具栏和上下文菜单访问的功能。因为工具栏和上下文菜单可能被隐藏,但是他们的操作应该在菜单条上总是可用。

People should be able to find all the available features in your application. Don’t hide features by failing to make commands available in a menu. Menus present lists of commands so that people can see their choices rather than try to remember command names. Avoid providing access to features only in toolbars or contextual menus. Because toolbars and contextual menus may be hidden, the commands they contain should always be available in menu bar menus as well.

如果您的程序能够让用户将格式化的数据发布到网络或写入到电影,DVD,或者其他格式中,请确保用户在屏幕上看到的和他们得到的最终结果没有显著的差异。当用户对文档进行更改时,立即显示更改的结果;用户无需等待最终的结果或者想像文档是什么样的。必要的时候提供预览的功能。

容错性

Forgiveness

Encourage people to explore your application by building in forgiveness—that is, making most actions easily reversible. People need to feel that they can try things without damaging the system or jeopardizing their data. Create safety nets, such as the Undo and Revert to Saved commands, so that people will feel comfortable learning and using your product.

提供充分的容错性以鼓励用户使用程序的各种功能─也就是说,大部分的操作都是很容易恢复的。用户应该觉得可以尝试各种功能而无需担心破坏系统或者损坏数据。提供如撤销,恢复到已保存状态等操作,从而让用户放心的学习和使用您的产品。

Warn users when they initiate a task that will cause irreversible loss of data. If alerts appear frequently, however, it may mean that the product has some design flaws. When options are presented clearly and feedback is timely, using an application should be relatively error-free.

当用户执行一个可能造成不可恢复的数据丢失的操作时应该给用户警告。然而,如果这种警告出现的太频繁,那么意味着产品设计上的缺陷。当选择很清楚给出并且反馈很及时时,程序的使用也应该是无差错的。

Anticipate common problems and alert users to potential side effects. Provide extensive feedback and communication at every stage so users feel that they have enough information to make the right choices. For an overview of different types of feedback you can provide, see “Feedback and Communication.”

提前预见一些通常的问题并给用户一些关于潜在的影响的警告。提供大量的反馈和交互,从而让用户有足够的信息做出正确的选择。关于不同类型的反馈的更多信息,请参考 ““反馈和交互。”

感知的稳定性

Perceived Stability

The Aqua interface is designed to provide an understandable, familiar, and predictable environment. To give users a visual sense of stability, the interface defines many standard graphical elements, such as the menu bar, window controls, and so on. These standard elements provide users with a familiar environment in which they know how things behave and what to do with them.

Aqua接口被设计来提供一个用户可理解,熟悉和可预期的环境。为了给用户一个稳定的可视化体验,Aqua接口提供了很多标准的界面元素,如菜单条,窗口控件等等。这些标准元素向用户提供了一个熟悉的环境,在这个环境中用户熟知这些元素的行为并知道怎样操作它们。

To give users a conceptual sense of stability, the interface provides a clear, finite set of objects and a set of actions to perform on those objects. For example, when a menu command doesn’t apply to a selected object or to the object in its current state, the command is dimmed rather than omitted.

为了给用户一个稳定的感知,对于对象以及实施在这些对象上的操作,Aqua接口提供了一个清晰的限制集合。例如,当一个菜单操作不能应用在当前选定的对象或者对象的当前状态时,这个菜单操作应该变灰而不是省略。

To help convey the perception of stability, preserve user-modifiable settings such as window dimensions and locations. When a user sets up his or her onscreen environment to have a certain layout, the settings should stay that way until the user changes them.

为了不破坏用户对稳定性的体验,程序应该保留用户更改过的配置,例如窗口的大小和位置等。当用户创建一个定制的屏幕环境以具有固定的布局时,这些设置应该一直保留倒用户再次更改他们。

Providing status and feedback also contributes to perceived stability by letting users know that the application is performing the specified task.

提供程序运行的状态和反馈让用户知道程序正在进行的任务,同样能提高感知的稳定性。

整体美学

Aesthetic Integrity

Aesthetic integrity means that information is well organized and consistent with principles of good visual design. Your product should look pleasant on the screen, even when viewed for a long time.

整体美学意味着信息经过良好的组织并且和视图设计一致。在长时间使用的情况下,您的产品应该仍然令人愉快。

Keep graphics simple, and use them only when they truly enhance usability. Don’t overload windows and dialogs with dozens of icons or buttons. Don’t use arbitrary symbols to represent concepts; they may confuse or distract users. The overall layout of your windows and design of user interface elements should reflect the user’s mental model of the task your application performs. See “Reflect the User’s Mental Model” for more information on this concept.

尽量保持图片简单,并且只在图片能够真正的增强可用性时才使用图片。不要在窗口和对话框中塞满图标或者按钮。不要随心所欲的使用符号来表达一些概念,因为他们可能对用户构成困扰或者分散用户的注意力。窗口的布局和用户接口元素的设计应该反映用户的心智模型。关于心智模型的更多细节,请参考“反映用户的心智模型”。

When implementing your user interface, there are many things you can do to ensure high quality. For example:

很多事情可以帮助您保证用户接口的高质量。例如:

  • All icons should be rendered at the highest quality (see “Icons” for extensive guidelines for icon design).
使用高质量的图标(关于图标设计的指导见“图标”)。
  • All text should be anti-aliased, which is automatic when you use the standard system fonts (see “Fonts” for more information).
使用抗锯齿的字体。标准的系统字体自动是抗锯齿的。(更多信息见 “字体”)。
  • The font size and type should be consistent within a window (see “Text” for more information on the font sizes and styles available to you).
一个窗口中字体的大小和类型应该一致(关于字体大小和类型的更多信息,请参考 “文字”)。
  • The control size should be consistent within a window—for example, don’t mix small and standard controls (see “Controls” for more information on the controls Mac OS X supplies).
在一个窗口内的控件大小应该一致─例如,不要将小号控件和标准控件混用(关于Mac OS X提供的控件的更多信息,请参考 “Controls”)。

Match a graphic element with a user’s likely expectations of its behavior. Don’t change the meaning or behavior of standard items. For example:

界面元素的行为应该和用户期望的一致,不要试图更改标准控件的行为。例如:

  • Always use checkboxes for multiple choices, not for mutually exclusive choices
复选框应该只用来多项选择,而不是单一选择。
  • Use push buttons for immediate commands such as “Open”
按钮只应被用来表示一些立即执行的东西,如”打开“。
  • Avoid using push buttons to display pop-up menus or serve as tabs
避免使用按钮来显示弹出菜单或者将按钮用作标签。
  • Avoid using bevel buttons as tabs
避免将圆角按钮用作标签页。

避免“模式”

Modelessness

As much as possible, allow users to do whatever they want at all times. Avoid using modes that lock them into one operation and prevent them from working on anything else until that operation is completed.

尽可能的让用户在任何时候都能做他们想做的事情。避免使用模式对话框来将用户锁定在某个操作中,以至于在当前操作完成前用户不能做别的事情。

Mac OS X supports enhanced modelessness with drawers and sheets. Drawers provide additional functionality while allowing continued access to the parent window. Sheets are modal dialogs attached to a parent window, replacing the use of application-modal dialogs. For more information about drawers, see “Drawers.” For more information about sheets, see “Sheets (Document-Modal Dialogs).”

Mac OS X通过抽屉式对话框和表单式对话框提供了增强的无模式对话框。抽屉式对话框能够让用户同时能够访问父窗口。表单式对话框是附着在父窗口上的模式对话框,而不是整个程序的模式对话框。关于抽屉式对话框的更多信息,请参考抽屉式对话框。”关于表单式对话框的更多信息,请参考表单式对话框(文档─模式对话框)。”

Most acceptable uses of modes fall into one of the following categories:

大部分模式的使用可以划分为下面几类:

  • Short-term modes in which the user must constantly do something to maintain the mode. Examples are holding down the mouse button to scroll text or holding down the Shift key to extend a text selection.
用户必须一直不断的进行某种操作的短期模式。例如一直按下鼠标来滚动文字,或者按着shift键来扩展文本的选择。
  • Alerts, in which the user must rectify an unusual situation before proceeding. Keep these to a minimum.
告警,用户必须纠正某种异常才能继续。尽量少用这种类型。
  • Installers and Assistants whose sole purpose is to guide users through important tasks.
安装或者帮助,唯一的目的就是指导用户。

Other modes are acceptable if they do one of the following:

下面情况之一的模式也是可以接受的:

  • They emulate a familiar real-life situation that is itself modal. For example, choosing different tools in a graphics application resembles the real-life choice of physical drawing tools.
模拟现实的情形。例如, 在绘图程序中选择不同的工具模拟了现实中不同绘画工具的选择。
  • They change only the attributes of something, not its behavior. The boldface and underline modes of text entry are examples.
只是修改了某些属性,而不是行为。例如文字的粗体和下划线。
  • They block most other normal operation of the system to emphasize the modality. An example is a dialog that makes all menu commands unavailable except Cut, Copy, and Paste.
阻塞了所有正常的操作以强调其模式。例如对话框让除了剪切,复制和粘贴之外的菜单项都灰掉。

If an application uses modes, there must be a clear visual indicator of the current mode, and it should be very easy for users to get into and out of the mode. For example, in many graphics applications, the pointer can look like a pencil, a cross, a paintbrush, or an eraser, depending on the function (the mode) the user selects. Segmented controls are also useful to indicate modes, as is done in iPhoto.

如果一个程序使用了模式,则必须能够清楚的提示当前的模式,而且用户应该能够轻松的切入或者切出该模式。例如,在很多图形程序中,依赖于用户选择的功能(模式),画出的点可以象笔,十字,画刷,或者橡皮擦。分段控件可以用来指示当前模式,如iPhoto所示。

管理程序的复杂性

Managing Complexity in Your Software

The best approach to developing easy-to-use software is to keep the design as simple as possible. In other words, a simple design is a good design and the best tools are those that users are not even aware they are using. The more you can do to simplify the interface of your application for your users, the more likely it is that you will build a product that meets their needs and is enjoyable to use.

开发一个易于使用的程序的最好办法就是设计得尽可能的简单。换句话说,简单的设计就是一个好的设计,最好的工具就是用户甚至不知道他们在使用的工具。您的程序接口对于您的用户来说越简单,您的产品越可能满足他们需要并乐于使用。

The more complex your application’s task, the more important it is to keep the user interface simple and focused. Be sure your design reflects the user’s mental model (see “Reflect the User’s Mental Model” for more information on this concept). In addition to creating a streamlined design, you can also manage complexity in the following ways:

程序中越是复杂的功能,简洁突出的用户接口就越是重要。确保您的设计反映了用户的心智模型。(更多信息请参考 反映用户的心智模型”)。除了高效的设计之外,您还可以以下面的方式管理程序的复杂性:

  • Progressive disclosure presents the most common choices to the user first and provides an option that allows the user to view additional information and choices. This technique makes it easy for novice users to understand your user interface while still giving power users the advanced features they want.
渐进式提供信息。首先向用户呈现最通用的选项,并且提供选项允许用户查看额外的信息和选择。这种办法使得初学者很容易了解产品的用户接口,而熟练用户也能得到他们需要的功能。
You can implement progressive disclosure using disclosure triangles (see “Disclosure Triangles”) or disclosure buttons (see “Disclosure Buttons”), depending on the context.
您可以通过disclosure triagnles来实现processive disclosure, 具体依赖于上下文。
  • Inspector windows (and, to a lesser extent, Info windows) reduce the clutter of a user interface by placing additional information and settings in a separate window that can be hidden or shown by the user.
检查器窗口(以及一个次要的信息窗口)使得用户接口更为简洁,因为一些额外的信息被放在一个独立的窗口中,用户可以控制这个窗口的显示和隐藏。
For more information on the differences between Info windows and inspector windows and how to use inspector windows, see “Inspector Windows.”
关于信息窗口和检查器窗口的不同以及怎样使用检查器窗口的更多信息,请参考“检查器窗口。
  • Preferences reduce the complexity of the user interface by giving users the ability to customize what they see on the display screen and, to some extent, how the application performs. By providing preferences, you allow both novice and expert users to mold your application to fit their needs.
让用户可以定制屏幕上显示的控件,从而降低用户接口的复杂度。进一步,定制程序的功能。通过提供配置文件,初学者和熟练用户都可以让您的产品符合他们的需求。
For more information on how to craft a useful set of preferences, see “Preferences.”
关于怎样提供有用的配置信息,请参考 “偏好设置。”

取自“http://www.uxguide.net/wiki/macos:Human-interface-design-principles”

原创粉丝点击