每个开发人员都应该知道哪些关键的 UI 设计技巧?
虽然有许多面向开发人员的 UI 资源(例如,Joel Spolsky 的程序员用户界面设计),但我更感兴趣的是可以在 1 到 2 页中传达的项目符号列表。
我对更具战术性的日常 UI 技巧感兴趣,而不是 UI 设计会议(可能至少有一个具有良好 UI 意识的人参加)中涵盖的总体 UI 设计目标。这些技巧的集合可能涵盖了日常程序员会遇到的大约 80% 的情况。
每个开发人员都应该知道哪些关键的 UI 设计技巧?
虽然有许多面向开发人员的 UI 资源(例如,Joel Spolsky 的程序员用户界面设计),但我更感兴趣的是可以在 1 到 2 页中传达的项目符号列表。
我对更具战术性的日常 UI 技巧感兴趣,而不是 UI 设计会议(可能至少有一个具有良好 UI 意识的人参加)中涵盖的总体 UI 设计目标。这些技巧的集合可能涵盖了日常程序员会遇到的大约 80% 的情况。
当然,所有这些规则都可以被打破。但只有当你出于正当理由破坏它时才破坏它。
请记住,软件是用来帮助用户的,它应该做他们想做的事,而不是让他们做他们想做的事。
当您要执行将更改或删除信息的操作时,不要问“您确定吗”——用户将学会单击按钮作为操作的一部分。尝试在系统设计中允许“撤消”。
选择大多数用户会满意的默认选择。
始终为您的用户提供无需使用后退按钮的“出路” 。
最好的例子:
如果发生错误,请给他们一个链接返回到他们所在的位置(或至少到他们可以重新开始的位置)。
尽可能使用工具提示。令人惊讶的是,这些小家伙可以为最终用户添加大量帮助,而且他们对应用程序本身并不显眼。
在设计 UI 时,让它尽可能简单,但不要更简单。
我认为这个链接将是一个很好的起点,来自微软的“Windows Vista 用户体验指南:http:
//msdn.microsoft.com/en-us/library/aa511328.aspx
这可能非常接近您正在寻找的两页项目符号列表:“Top Violations”:http:
//msdn.microsoft.com/en-us/library/aa511331.aspx
非常实际的提示,例如:“如果窗口大小低于该大小,内容不再可用,请设置最小窗口大小。”
正确的制表位是必须的。
不要以基本的清晰度和可用性为代价来增加“可发现性”。
找到用户最常做的事情,然后让它成为最容易做的事情。
例如:我对微波设计有一个长期的个人抱怨。
许多人要求您在使用微波炉之前设置一个您从未使用过的时钟,并且每次断电时它都会忘记,并且需要在那些难以使用的按钮板上按 10 次按键才能这样做。
一个简单的可用性测试将意识到微波炉上最常见的烹饪时间是标准的“分钟”及其倍数。因此,理想的微波炉应该能够以 3 次或更少的动作以高功率烹饪产品 1 分钟。
对于一分钟以外的时间,但在黄金“1”分钟的 5 分钟内,应该有稍微更多的步骤,但不会显着增加,并且只有烹饪时间 > 5 分钟需要大量的操作。(这是相当罕见的)
温度刻度盘是模拟的,并且与以前的设置保持一致,具有不同的滑动范围。
时间表盘是数字的,但模拟模拟,顺时针转动表盘会增加时钟时间(由表盘下方的照明顺序显示)。逆时针转动表盘可减少时钟时间。烹饪会减少时钟时间。
门被关上,计时开始做饭。开门暂停烹饪。
标准操作:开门、加载、转动时间刻度盘、关门(或可选,先关门,时钟开启>1s 后立即开始烹饪)
没有选择时间的开始按钮以大功率开始烹饪 1 分钟。
烹饪时的开始按钮会增加 1 分钟的时间。
时间拨号在会话之间持续存在。转动刻度盘会将刻度盘位置上存储的时间复制到数字计时器中。
在开始烹饪之前按“电源”会
烹饪时按下电源会降低运行中的功率水平。
标准操作: 1 分钟高 = 按下开始。
1 分钟中高 = 按下开始,按下电源。
2 分钟高 = 按两次开始。
<anytime> 高 = 转动拨号直到满意,按开始。
<anytime> on <anypower> 转动拨号直到满意,按电源直到满意,按开始。
<previous selected time> on high = 按电源,按开始
<previous selected time + 1 minute> on high = 按电源,按两次启动。
正如您在此处看到的,添加少量额外的按钮,可以极大程度地增加表现力和功能性设计。
任何带有用于时间规范的数字小键盘的设计,都往往不符合我对良好设计的标准。
它指出,对于某些人来说,这些设计可能具有更高的学习曲线,但一旦学会,肌肉记忆就会使其成为本能。与更(明显?)但过于复杂的设计相反,即使是有学识的用户也将不得不反复花费大量时间执行乏味的任意操作,只是为了实现共同目标。
做一些走廊可用性测试(就像你做代码审查一样)。
即使是对你旁边的人进行非常快速的“嘿!试试这个”可用性测试(如果你可以这么说的话)也会产生很大的不同。最重要的是让自己以外的其他人尝试您刚刚构建的 UI。
令人惊讶的是,有多少次其他人在使用您的新 UI 时遇到问题,并且(通常)只需要几分钟就可以找到最大的问题。
如果您确实使用来自编辑器的弹出窗口,请确保将插入点或状态返回到弹出窗口之前的状态。太多的程序只会让你“悬而未决”,不得不找到回去的路。
而不是任意的“确定”和“取消”按钮,在给定的上下文中,这些按钮可能是模棱两可的,并且用户会盲目地点击一个按钮,这些按钮应该包含对他们所做的事情的简要描述。
[Ok, Please Cancel my subscription ], [ Please do not cancel my subscription ]
远胜于
Cancel my subscription?
[ OK ] [ Cancel ]
(这类故障经常出现在dailywtf上)
伙计们......请随意以正当理由冲掉上述任何一点!
这是我对概念性问题的用语,“除了电子邮件和检查 www.cutecats.com 之外从未使用过计算机的你的祖母可以使用它吗?(假设她具有使用该特定应用程序的实际知识)”。
所有常见的东西都应该是显而易见的;没有什么应该是带有副作用的黑盒魔法。不常见的东西应该以用户以前使用过的通用格式访问。
清晰的标签,清晰的帮助文件路径,清晰的动作,清晰的效果。
如果奶奶不能使用你的画图程序,你需要真正考虑你的用户界面。
我的 UI 设计的基本规则是让每个“页面”完成一项任务,并且只执行一项任务。它使页面保持简单,使设计保持简洁并使应用程序更易于理解。
这种类型的设计称为感应式用户界面。这是微软在 2001 年发布的关于该主题的文档。文字可能有点过时,但原则通常都很好。唯一需要注意的是,在这样的设计中需要找到平衡。如果你过度简化了太多,用户将不得不到处导航以完成简单的任务,而在可理解性方面的收益将因工作效率低下而丧失。
日常用户界面网页设计和应用程序设计的一些简单技巧:
我喜欢遵循这些指导方针: