用户界面很难做

EA公司的《战地风云2》在正式发布之前的用户界面很糟糕,有一些用户颇有微词:

EA公司(即Electronic Arts)是全世界首屈一指的互动性娱乐软件制作发行商,产品范围广泛,包括PC游戏、索尼Play StationXbox 电视游戏软件、任天堂GameCubeGame Boy Advance游戏软件等等。EA 是美国纳斯达克上市公司,年收入超过43亿美元,业务分布26个国家,全球员工人数超过9000位。——译者注

用户甲:他们不能再让那些狂暴的小男人和不懂情调的女人们去设计用户界面啦!

用户乙:难道指的是大部分程序员?

用户丙:不是,是所有程序员。

挺有趣的,因为这也是事实。注意,我无意评论“女程序员不懂情调”;我的意思是,对“大部分程序员不擅于设计用户界面”的指责不无道理。部分的原因是,用户界面确实很难做。Eric M. Burke在2004年的一篇题为“GUI Programming is Hard”的文章里说道:

GUI生成器使得GUI编程看起来很容易。通过使用GUI生成器,几乎任何人都可以在顷刻之间弄出一个好看的GUI来。轻轻松松就能搞定!

然而,搞出一个临时凑合的EJBEnterprise Java BeanJAVA中的商业应用组件技术)系统要难得多!给人的印象是,服务器端的编程比较难做。差劲的程序员会继续与EJB纠结,而优秀的程序员会想方设法让EJB的各部分尽可能都自动化。这是服务器端编程的“秘密”:定义非常明确,可重复生产。因此,自动化是可行的。

只要拿起你最喜欢的“模型驱动架构”(Model-Driven-Architecture,简称MDA)工具。它们在生成服务器端代码(比如EJB、数据库访问、Web服务等)的时候是非常出色的。它们也许还能生成基本的GUI,但真正杰出的GUI是不可能实现自动化的。

不过,程序员也是有部分责任的。大部分程序员一开始考虑的总是代码,而不是用户界面。Rick Schaut 在2004年的一篇题为“UI Design”的博文里说道:

John差不多点中了问题的关键。以前没人这么说过。当你在开发一个面向最终用户的软件时——不管你是在开发一个全新的Web应用程序,还是给一个现有的程序增加一个新特性,或者给其他程序做一个插件——你都必须先把用户界面设计好。

这有点困难,原因是多方面的。首要的一点是,大部分程序员(特别是那些进修过大学计算机科学课程的人)在学习编程的时候,首先学的是编写通过命令行运行起来的代码。因而,我们学会了怎样实现高效的算法,去解决一些常见的计算机科学问题;但我们从来没有学过怎样设计优秀的用户界面。

第二个问题是,我们用于创建用户界面的工具往往只能应付比较简单的使用场景;一旦碰到比较复杂的用户场景,工具很可能就捉襟见肘了。在一些适用窗体的特定问题领域里,窗体设计器表现得非常棒;一旦你离开那些领域,工作就会变得困难许多。如果使用灵活一点的工具,比如Xcodenib工具和Mac OS XHIView对象,你就必须写很多代码去管理这些UI对象。

这也就是所谓的“用户界面优先设计的软件开发模式”。不过,似乎鲜有人提及……

参见作者的另一本书《高效能程序员的修炼》的第7.4节“用户界面须优先设计”,人民邮电出版社(2013年)。——译者注

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值