从Windows的角度看Mac OS X上的软件开发( 六 )


尽管如此,GUI是造就Mac OS X在外观上与其他平台不同的最大要素 。与之相伴的是OS X对于用户体验近乎执着的追求 。
OS X在GUI上并没有一个特别的子系统 。通常我们用接触到的API来区分 。好比说如果用的是Carbon我们会称为HIToolkit,如果用的是Cocoa则会说是AppKit(Cocoa主要是由非GUI的Foundation──不要和CoreFoudation搞混了──以及提供GUI组件的AppKit所组成的) 。Apple的开发工具中并没有类似Visual Basic一类把接口画完、在组件上点两下鼠标,把程序填进去就完成应用程序的工具或流程 。最接近的是Interface Builder (IB)这套工具 。IB做出来的.nib文件其实就是封存好的GUI对象,生成之后再回Xcode将必要的连结关系拉完,程序代码填上(通常量不会很多)就完成程序了 。IB会是Xcode以外,OS X开发者最常用的工具 。
OS X提供的GUI组件特色为细腻、一致、直观 。这并不代表OS X的GUI无法做复杂的设定和客制化 。但是相较之下,OS X的应用程序更倾向于善用或组合现有的视觉元素,而较少自创新的custom control 。这一点和Windows上,尤其是小型工具程序,喜欢一种程序就创造一种视觉风格,或是大量提供使用者可更换的skin,有着相当大的文化差异 。虽然Apple自家的软件跟微软相似,喜欢提前使用下一个版本才出现的视觉风格或元素,有时让开发者觉得难以捉摸,但大体上遵守Apple自家的HIG (Human Interface Guideline)还是常态 。
我们提到了文化差异;OS X在视觉上的细腻,以及对用户体验的追求,造就了一种高要求的文化 。这可以说是一种正向循环 。我们或许很少听说哪个Windows开发者会为了icon向左偏了1 pixel而大改特改,或是要求自己的软件要在视觉及操作上符合哪个规范的一致性 。但OS X的开发者真的会谈论并严肃看待这件事情(著名的icon设计商IconFactory以及独立软件商Panic是著名的两个代表),同样的也有相当多OS X使用者以同样严苛的标准看待他们使用的软件,甚至可能写信告诉你,指出你的软件在用户体验或视觉设计上的缺陷(笔者就曾经收到使用者来信,指出笔者的一个软件在pull-down menu中使用的icon「语意」不合乎用户对该种GUI组件的期待) 。又好比说,从OS X 10.5 Leopard开始,icon最大可以大到512x512,Apple也强烈建议开发者要准备这么大的尺寸(除了原有的16x16、32x32、128x128之外) 。这当然无形中提高了开发的挑战 。Windows在XP以前仅支持16x16、32x32、48x48,直到Vista才开始加大到64x64和256x256 。
另一个与GUI不直接相关,但却影响用户体验的,是OS X的本地化(localization)系统 。这一点也是和Windows不同的地方 。OS X因为有bundle的设计,因此能让一个应用程序同时包装各种不同语系的资源文件,同时开发多语系程序在OS X上也相对容易(通常是以提供各种不同版本的.nib bundle放进应用程序bundle中Content/Resources/底下以语系区域来区分的子目录中就完成了 。Windows程序设计一向以"resource file"概念来管理icon及本地化等「外部」资源,名称相似,开发方式却不那么一贯而直观;另外,OS X的语系是可以按照顺序fallback的,例如要是繁体中文语系档找不到,而用户在语言设定中将简体中文设定在繁体中文的后头,那么OS X便会尝试套用简体中文语系档),结果是OS X使用者对本地化同样有着高标准与高期待 。另一方面,笔者也建议大家,除非软件确定只有中文用户使用,不然一开始先以英文界面开发,再加上中文的本地化资源,以长期来说是值得(甚至是必要)的投资 。
一些较难归类但同样重要的差别Mac OS X跟Windows在软件开发作法上的差异还有很多,上述只就最大的方向差异阐释 。有些较细微但值得一提的差别,我们也在这里简单说明 。

推荐阅读