顶置菜单

通常,OS X 应用程序的主菜单位置是让刚刚接触 Mac 的 Windows 用户感到新奇的一个地方。主菜单不从属于任何一个窗口。所有应用程序的主菜单都在整个屏幕的最上方显示,同一时刻不可能有多于一个应用程序的菜单显示。所以 active 程序切换的时候会产生 Windows 上没有的菜单切换现象。

对于顶置主菜单与窗口主菜单的优劣,Apple 的 Bruce Tognazzini 从用户交互的效率和速度为 Mac 的风格做出了辩护。当然也有人进行了针锋相对的驳斥。在我看来,在这场围绕 Fitt’s Law(或者说指向设备 —— 即鼠标的操作速度和效率)的争论中,双方至多算打了一个平手。我自己将近三年的 Mac 开发和使用得到的感觉是:主菜单和窗口的逻辑关系要比鼠标的指向速度重要的多得多。

至少有三个原因让我认为主菜单应该和窗口分离。第一,主菜单重在一个『主』字。基本上应用程序能完成的所有功能都应该在主菜单中能够找到对应项。所以,主菜单中必然包含非针对某个窗口(窗口无关的)或者针对多个窗口的操作。最为典型的是『 Windows 』菜单 —— 列出所有打开的窗口,控制窗口的排列。让主菜单这样的 UI 元素从属于某个窗口 —— 一个后果就是每个窗口都有一个 『 Windows 』菜单 —— 从逻辑上说是十分怪异的。第二,在 93 年左右或者更早接触过电脑的人一定知道当年著名的 MDI 模式。也就是 Word 5.0 那种模式 —— 一个大的窗口包含所有的文档窗口。这似乎是 Microsoft 在不违反 Windows 本身的主菜单必须依附于窗口的前提下,尝试让主菜单脱离文档窗口的一种尝试(当然这不是 MDI 的唯一目的,但是我认为从逻辑上看这种考虑是有的)。遗憾的是,MDI 的大窗口带来的用户体验似乎是很糟糕的,让 Microsoft 不得不放弃尝试让 MDI 作为主流。随之而来的是几种不成功的尝试:Visual Basic 6.0 把主菜单做成单独的窗口(也为 Delphi 和某些版本的 Photoshop 采用);Visual Studio 把所有窗口用 dock tab 来实现(UltraEdit 类似)。前者类似 Mac 的风格,但是在处理主菜单的显示上明显没有 Mac 的置顶方式简洁,基本可以认为是 Mac 风格的胜利。而后者并非完美的方案,因为在有了 tab 的情况下用户往往仍然需要窗口级别的组织才能更好的同时处理更多文档。

第三,今天的程序往往很多功能并不体现在窗口上,所以很多程序有了一个特殊的状态 —— 没有任何窗口打开,但是程序仍然保持后台功能的运行。这个状态可以叫做 stealth 模式。MSN、Adobe Bridge、很多浏览器、播放器都有这种状态。但是如何从 stealth 模式恢复成普通模式?当主菜单依附于窗口的时候,进入了没有窗口的 stealth 模式时主菜单对于返回普通模式就无能为力了。在 Windows 下,开发者必须编写支持托盘图标(Tray Icon)的代码来支持 stealth mode。而在 Mac 上,几乎任何程序都天然的拥有 stealth 模式,无需一行特别代码来实现 —— 没有编写的代码就是 bug 最少的代码,也是最快的代码。Mac 程序在 stealth 模式下仍然可以拥有一个全功能的菜单(当然不合理的菜单项会 disable),而不是托盘图标提供的一个粗陋的菜单。Mac 的菜单切换也变成了在 stealth 模式下更好的隐藏程序从而不影响用户使用其它应用的一个优势,这是前面说的那种 Visual Basic 风格的独立窗口主菜单不具备的。

而且,今天的应用程序更多的把主菜单作为一种完备性的体现而不是用户体验的主要组成部分。快捷键,工具条,拖放,图标,右键菜单(context menu),乃至于 multi-touch pad 的 gesture;这些才是用户体验的集中体现。所以,主菜单的设置合理更多的在于逻辑关系的正确和清晰,主菜单是用户发现功能的场所,而不是使用功能的主要场所。不是 Fitt’s Law 体现的速度和效率的主要舞台。所以,即使在 Fitt’s Law 方面各执一词,在菜单切换现象上略有劣势,我仍然有理由认为 Mac 的菜单风格胜出。

一条回应 to “顶置菜单”

  1. fuzhou Says:

    好,我就知道这个所有同时在两个系统混过的Mac和Windows迷都津津乐道的话题迟早要从这里再冒头一次的。

    要我说Microsoft在UI上最大的毛病就是做什么都没长性,从每个主窗口一个菜单,到每个子窗口一个菜单,又恢复到主窗口一个菜单,到现在的基本上不显示菜单,变来变去,所以给人“不断尝试”的假象,其实根本就是不知道自己想要的是什么。如此就能解释为什么Windows下如此多的人都热衷于自己做控件画UI,而始终没有一套所有人都接受的控件工具包。(别跟我说MFC,这玩艺Microsoft里内部都不怎么用)。

    至于工具栏放在哪里,倒是其次了。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s


%d 博主赞过: