注释
此设计指南是为 Windows 7 创建的,尚未针对较新版本的 Windows 进行更新。 大部分指导原则上仍然适用,但演示和示例并不反映我们 当前设计指南。
出色的桌面应用程序功能强大,同时简单。 通过精心平衡的功能选择和呈现,你可以同时实现强大功能和简洁性。
强大:

强大且简单:

基于 Windows 的理想应用程序既强大又简单。 当然,你希望应用程序强大且当然希望它很简单,但你能否同时实现这两个目标? 这些目标之间自然存在紧张关系,但这种紧张关系远非不可调和。 可以通过精心平衡的功能选择和演示来实现强大与简约。
是什么使应用程序变得强大?
在软件方面,“权力”真正意味着什么? 如果应用程序挤满了各种功能,则应用程序可能会被视为强大,并具有大量功能,以尝试向所有用户提供所有内容。 这种设计不太可能成功,因为未定目标的功能集不太可能满足任何人的需求。 这不是我们追求的力量。
当应用程序具有以下特征的正确组合时,应用程序非常强大:
- 启用。 应用程序满足其目标用户的需求,使他们能够执行他们无法执行的任务,并有效地实现其目标。
- 有效。 应用程序使用户能够执行工作效率级别和规模的任务,而以前无法实现。
- 多功能 应用程序使用户可以在各种情况下有效地执行各种任务。
- 直接。 应用程序感觉就像是直接帮助用户实现其目标,而不是妨碍或需要不必要的步骤。 快捷方式、键盘访问和宏等功能可提高操作的直接性。
- 灵活。 应用程序允许用户对他们的工作进行全面且细致的控制。
- 已集成。 该应用程序与 Microsoft Windows 很好地集成,允许它与其他应用程序共享数据。
- 高级。 该应用程序具有非同寻常、创新、最先进的功能,这些功能在竞争解决方案中找不到。
其中一些特征取决于用户的感知,并与用户当前的能力有关。 被认为强大的功能可能会随着时间推移而变化,因此今天的高级搜索功能明天可能很常见。
所有这些特征都可以组合到权力的定义中:
当应用程序使目标用户能够有效地实现其全部潜力时,应用程序非常强大。
因此,权力的最终度量是生产力,而不是特征的数量。
不同的用户需要帮助以不同的方式实现其全部潜力。 对某些用户有益的功能可能会损害其他人的多样性、直接性和控制能力。 设计良好的软件必须适当平衡这些特征。 例如,专为非专业设计的桌面发布系统可能会使用向导来引导用户完成复杂的任务。 此类向导使目标用户能够执行他们否则无法执行的任务。 相比之下,面向专业人士的桌面发布系统可能会专注于直接性、效率和完全控制。 对于使用这种应用程序的用户来说,向导功能可能会让他们感到受限和沮丧。
如果你只做一件事...
了解目标用户的目标并制定一个功能集,使用户能够高效实现这些目标。
是什么使用户体验变得简单?
我们定义简单性,如下所示:
简单性是减少或消除用户熟悉的设计属性,而这些属性被认为是不重要的。
在实践中,通过选择正确的功能集并正确呈现特征来实现简单性。 这减少了无关紧要的事物,无论是真实的还是感知到的。
简单性取决于用户的看法。 考虑自动传输的效果取决于用户的观点:
- 对于典型的司机(目标用户),自动变速器消除了手动齿轮移位和离合器的需求,使汽车更容易驾驶。 手动齿轮换档和离合器对驾驶任务来说并不重要,因此它们被移除以实现简单。
- 对于专业赛车手来说,直接控制传输对于竞争至关重要。 自动变速器对汽车的性能产生负面影响,因此不被认为能够使驾驶更简便。
- 对于机械师来说,自动变速器是一种更复杂的装置,因此不比手动变速器更容易修复和维护。 与机械师不同,目标用户非常幸福地不知道这种内部复杂性。
虽然不同的用户以不同的方式看待自动变速器,但它很成功,因为它消除了目标用户对非必要的知识、技能和努力的需求。 对于典型的司机来说,自动变速器是一个很好的功能,因为它操作简单。
简单性与易用性
简单性,正确应用时,将便于使用。 但简单性和易用性并不是相同的概念。 当用户可以在适当时间内成功执行任务时,无需遇到困难或混淆,即可轻松使用。 有许多方法可以实现易用性,而简单化——即减少不必要的东西——只是其中之一。
所有用户,无论多么复杂,都希望以最少的不必要的工作量完成他们的工作。 所有用户(甚至高级用户)主要是为了完成工作,而不是了解计算机或应用程序。
简单性是实现易用性的最有效方法,而易用性意味着更多使用。 复杂且难用的功能根本不会被使用。 相比之下,执行其功能良好的简单、优雅的设计是一种使用的乐趣。 它们会引起积极的情绪反应。
例如,请考虑 Microsoft Windows XP 中的无线网络支持。 Microsoft可能已添加向导来引导用户完成配置过程。 虽然这种方法会使其易于使用,但并不简单,因为会增加一个不必要的功能(向导)。 相反,Microsoft设计无线网络来自动配置自身。 用户最终不关心配置详细信息,只要它“正常工作”可靠且安全。 无线网络技术中性能与简单性的结合,使其得以普及并迅速被采用。
如果你只做一件事...
开始你的设计过程,使用最简单的设计,以有效完成任务。
如果对当前设计不满意,请首先去掉所有不必要的元素。 你会发现剩下的东西通常相当好。
在保持强大的同时实现简约
设计原则
为了获得简单性,总是为可能而不是不可能而设计方案。
可能性
根据可行性做出的设计决策会导致复杂的用户界面,例如注册表编辑器,其中设计假设所有操作都是一样可能的,因此需要同等的努力。 由于任何可能,因此在设计决策中不考虑用户目标。
可能的情况
基于可能发生的情况做出设计决策,以实现简化的、以目标和任务为基础的解决方案,其中可能的情景成为关注焦点,并且执行这些任务所需的努力最少。
简单设计原则
若要获得简单性,请专注于可能的内容:减少、隐藏或删除不太可能的内容;消除不可能的事情。
用户将要执行的事情比他们可能执行的事情更与设计相关。
设计技术
若要在保持电源的同时获得简单性,请选择 正确的功能集, 在正确的位置找到这些功能,并减少使用这些功能 的努力 。 本部分提供了一些常见技术来实现这些目标。
选择正确的功能集
“完美不是在没有任何东西可添加的时候实现的,
而是在没有什么可带走的时候实现的。”— Antoine de Saint-Exupery
以下设计技术为用户提供了所需的功能,同时通过实际减少或删除实现简单性:
- 确定用户所需的功能。 通过目标、方案和任务分析了解用户的需求。 确定一组实现这些目标的功能。
- 删除不必要的元素。 删除不太可能使用或有更好替代方案的元素。
- 删除不必要的冗余。 执行任务的方法可能有多种。 为了实现简单化,请做出艰难的决定,为目标用户选择最佳方案,而不是提供所有选项让用户自行选择。
- 使其自动“正常工作”。 该元素是必需的,但不需要任何用户交互来使其工作,因为存在可接受的默认行为或配置。 为实现简约,将其自动运行,并完全对用户隐藏,或显著减少其可见性。
简化演示文稿
“简化消除不必要的手段的能力
以便必要的人员能够发声。”— Hans Hofmann
使用以下设计技术来保持强大,同时通过减少或消除的感知实现简约:
- 组合应组合的内容。 将支持任务的基本功能放在一起,以便可以在一个位置执行任务。 任务的步骤应具有统一的简化流程。 将复杂任务分解成一组简单清晰的步骤,以便一个地方可能由多个 UI 界面组成,例如向导。
- 分开应分开的内容。 不是一切都可以在一个地方呈现,所以总是有明确的,精心选择的边界。 使支持核心场景的功能变得集中和明显,并将可选功能隐藏或使其次要。 分隔单个任务并提供相关任务的链接。 例如,与编辑照片相关的任务应与管理照片集合的任务明确区分开,但相互之间应便于访问。
- 消除可消除的内容。 打印出设计,并突出显示用于执行最重要任务的元素。 甚至突出显示 UI 文本中传达有用信息的单个字词。 现在,请查看未突出显示的内容,并考虑将其从设计中删除。 如果删除该项目,是否会发生什么坏事? 如果没有,请将其删除!
- 一致性、可配置性和通用化通常是理想的品质,但它们可能会导致不必要的复杂性。 重新审视您的设计,识别并消除一致性方面的误导性做法(如冗余文本)、过度泛化(例如在两个时区足够时设定多个时区)以及配置选项的冗余(如那些用户不太可能更改的选项)。
- 将元素放在正确的位置。 在窗口中,元素的位置应根据其功能来确定。 基本控件、指示和解释都应按逻辑顺序在上下文中适当呈现。 如果需要更多选项,请通过单击 V 形或类似机制在上下文中公开它们;如果需要更多信息,在鼠标悬停时显示信息提示。 将不太重要的任务、选项和帮助信息放在单独的窗口或页面中的主流之外。 根据需要显示其他详细信息的技术称为渐进式披露。
- 使用有意义的高级组合。 与单个元素相比,选择和操作相关元素组通常更简单且更具可扩展性。 高级组合的示例包括文件夹、主题、样式和用户组。 此类组合通常映射到单个元素中不明显的用户目标或意图。 例如,高对比度黑色配色方案背后的意图比黑色窗口背景的意图要明显得多。
- 选择正确的控件。 设计元素由用于表示它们的控件所体现,因此选择正确的控件对于高效呈现至关重要。 例如,Microsoft Word 使用的字体选择框显示字体预览以及最近使用的字体。 同样,Word 显示潜在拼写和语法错误的方式比对话框替代方法要简单得多,如本文开头所示。
减少工作量
“简单的事情应该很简单。
复杂的事情应该是可能的。— 艾伦·凯
以下设计技术可减少用户的工作:
- 使任务可发现并可见。 应在用户界面中轻松发现所有任务,但尤其是频繁的任务。 执行任务所需的步骤应可见,不应依赖于记忆。
- 在用户的域中呈现任务。 复杂的软件要求用户将其问题映射到技术。 简单软件会通过呈现自然内容来为其执行该等映射。 例如,红眼减少功能直接映射到问题空间,不需要用户在色调和渐变等细节上思考。
- 将域知识放入程序中。 用户不应要求访问外部信息才能成功使用应用程序。 域知识的范围可以是复杂的数据和算法,只需明确输入类型是否有效。
- 使用用户理解的文本。 精心制作的文本对于与用户的有效沟通至关重要。 使用用户熟悉的概念和术语。 充分解释用纯语言提出的要求,以便用户可以做出智能、明智的决策。
- 使用安全、可靠、合理的默认值。 如果设置具有适用于大多数用户在大多数情况下的值,并且该设置既安全又安全,请将其用作默认值。 仅在必要时,使用户指定值。
- 使用约束。 如果有许多执行任务的方法,但只有一些方法正确,则任务会限制为这些正确的方法。 不应该允许用户犯本可以轻易防止的错误。
简单并不意味着简单
“一切都应该尽可能简单,
但并不简单。— 阿尔伯特·爱因斯坦
我们相信,简约是实现有效且令人满意的用户体验的关键,但也要注意不要过犹不及。 简单性的本质是减少或消除非必要的事物。 删除基本元素只会产生糟糕的设计。 如果你的“简化”导致用户感到沮丧、困惑、不满意或无法成功完成任务,则已删除太多。
简单性确实意味着你付出更多努力
“我把这封信写得更长是因为我
现在不是缩短的时候。”—Blaise Pascal
在保持电源的同时获得简单性通常需要大量的内部复杂性。 通常,设计公开所有技术管道的软件比设计隐藏它的软件更容易,后者需要对目标用户及其目标有很好的了解。 删除某个功能需要纪律,就像决定不添加那个虽然酷但实际上不切实际的功能一样。 简单性需要做出硬设计选择,而不是使所有内容都可配置。 复杂的软件通常源于对用户的误解:他们重视未使用的功能或他们无法理解的复杂功能。
强大且简单
强大就是为用户提供支持并提高用户的工作效率。 简约就是去除不必要的,并以正确的方式呈现功能。 通过了解目标用户并实现功能与演示文稿的正确平衡,可以设计基于 Windows 的应用程序,同时实现这两者。