`
从此醉
  • 浏览: 1041149 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

用户界面很难做

 
阅读更多

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年)。——译者注

分享到:
评论

相关推荐

    【Labview用户界面开发】动态载入界面设计

    在编写一个复杂的系统时,往往一个前面板很难显示所有的内容,就算勉强挤下,也会使界面看上去异常凌乱。有些情况可以用“Tab”控件来暂时缓解,但对于控件特别多的程序,尤其是这些子Ⅵ可能关联不是很密切的时候,...

    Visual C++图形用户界面开发指南 第一部分

    很难找的一本界面书,写的不错,包括了各种控件的设计,希望能对大家有用.以前那本有很多人说打不开.由于我一直也没过来看,实在抱歉.这次上传了PDF格式的.够清晰,能打开.资源分就设置个回复分吧.单个文件超过了10M,我...

    计算机软件用户界面设计的基本原则.doc

    专断的限制和不自然的操作一样,用户都很难 学会并容易忘记。 3.2 使用用户的词汇,而不是自己的 为软件或其文档撰写文本时,要避免计算机行话。应创建一个项目词典,词典应当为 用户将会看到的每个概念(对象、操作、...

    Java用户界面编程指南配套源代码

    是本书配套源代码,当时下的存起来了,后来就很难找哦

    用户界面设计与开发精解

    很难见的一本书哦!看名字就知道!

    亲爱的界面 让用户乐于使用、爱不释手.zip

    朗,Skitch公司COO和交互设计师写可用性话题很难摆脱过分学院派的缺点,但卢卡斯做到了。如果你熟悉基本的可用性概念,又想了解更多的内容,这本书是必读佳作!——乔恩·贝尔,WindowsPhone的交互设计师卢卡斯深刻...

    Matlab非常经典的新手教程进阶提高-第11章 MATLAB图形用户界面设计.ppt

    Matlab非常经典的新手教程进阶提高-第11章 MATLAB图形用户界面设计.ppt 对于新手,是由易而难的好教程,对于有一定基础的后面章节也有很好的提高,是个全面的ppt教程,希望能帮到大家!

    matlab代码不反应-gem:用于创建现代用户界面的MatlabGUI工具包

    Gem提供了丰富的功能集,这些功能很难在Matlab用户界面中手动编写,例如: 样式表,其中颜色和字体由控件从其父项自动继承; 鼠标悬停在控件上方,例如按钮和列表元素; 鼠标和键盘快捷键取决于位置。 不同的面板...

    UX_UI:用户体验和用户界面设计简介

    在技​​术和设计社区之间进行了如此多的讨论,很难找到每个人都可以接受的可行定义。 因此,为了弄清这些不同的主题,我将UX和UI中的每一个元素逐项列出到各自的阵营中。 用户体验 UX设计是确定您的产品将要实现的...

    VC++界面编程之--使用分层窗口实现界面皮肤

    使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果。 在很多情况下,界面的漂亮与否,取决于PS的制作及创意,而界面...

    java制作标签云图与界面展示

    标签云现在用javascript很容易实现,而且效果也很炫,在网络应用中比较多,但是java的桌面应用J2SE却很少,好像很难实现这种,但是最近发现java的图像界面也可以,我用的swt做的,实现用户关键词标签云生成。...

    认知与设计 理解UI设计准则(高清带目录)

    第1 章 我们感知自己的期望 1 经验影响感知 1 环境影响感知 4 目标影响感知 5 对设计意味着什么 7 第2 章 为观察结构优化我们的视觉 9 ...电脑用户界面中的例子 59 ...附录 著名的用户界面设计准则 149

    nx-console:Nx控制台是Nx的用户界面

    专业的开发人员同时使用命令行工具和用户界面。 它们在终端中提交,但解决了VSCode或WebStorm中的冲突。 他们使用正确的工具来完成工作。 Nx是一种命令行工具,当您要为应用程序提供服务或生成简单组件时,该功能...

    在ASP.NET 2.0中操作数据之二十七:创建自定义排序用户界面

     显示大量已经按类别(不是很多)排序的数据但没有类别分界线,用户很难找到所需要的类别。例如,数据库中只有9个类别(8个不同的类别和1个null),共81种产品.现在用一个GridView列出所有产品,假设有用户对类别...

    阐述手机游戏用户界面设计的8大步骤

    起初的界面是同时在整个屏幕上提供各种信息,并且没有任何一个明确的关注点,所以玩家很难搞清楚自己到底在看些什么。如此玩家便只会看着屏幕1秒就点击“下一步”按钮而开始接下来的关卡。换句话说,我们之前的界面...

    VC++-----MFC经典问答

    VC++-----MFC经典问答 很难找的书哦 对用VC++编写用户界面很有帮助

    第一章android界面设计利器

    很难和程序设计人员配合密切。前端UI设计师的目的在于如何让程序更加美观有些资深 的前端UI设计师也关注如何交互更加便捷。程序设计人员则更加关注代码是否干净结构 是否优良模块之间是否耦合性等。上述种种...

    Android无需root实现apk的静默安装

    Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new ...

    gossip:一个在线用户界面,可以有效地创作和交付令人敬畏的和内容丰富的演示文稿。 :rocket:

    闲话是一个在线用户界面,可有效地创作和交付精美而有启发性的演示文稿。 如果您在中国,可以尝试,否则尝试。 请使用Chrome,Firefox或Safari以获得更好的体验。 在有一种观点认为,讲故事和分享故事的能力使人类...

Global site tag (gtag.js) - Google Analytics