2009-12-12 91 views
3

有人可以向我解释OOP中的界面膨胀是什么(最好用一个例子)。什么是接口膨胀?

+0

我认为你是在谈论软件设计“界面膨胀”(http://en.wikipedia.org/wiki/Interface_bloat),但早期的答案表明你可能会谈论“功能膨胀”或“用户界面臃肿“(http://apcmag.com/microsoft_humble_pie_over_office_bloat.htm)。 **请澄清**。 – 2009-12-12 17:15:14

回答

8

天儿真好,

假设你的意思是API,而不是图形用户界面,对我来说I/F膨胀可以通过多种方式发生。

  1. 一个API只是不断扩展和扩展新功能,没有任何形式的隔离,所以你完成了一个单一的头文件变得很难使用。
  2. 在现有API中声明的函数不断获取添加到其签名的新参数,因此您必须继续升级并且现有应用程序不向后兼容。
  3. 现有API中的函数会因非常相似的变体而变得过载,这会导致难以选择要使用的相关函数。

为了解决这个问题,您可以:

  1. 分离出的API为一系列头文件和库,让您可以更容易地控制你真正需要什么零件。任何内部依赖关系都应该由供应商自动解决,以便用户不必通过反复试验来找出依赖关系。当我只想使用shozbot.h头文件中声明的API中的函数时,需要包含头文件wibble.h。
  2. 通过在适用的地方引入超载来使API升级向后兼容。但是您应该将重载函数分组到类别中,例如如果新的一组重载函数被添加到现有的API,比如说our_api.h,以使其适应新技术,比如说SOA,那么除了现有的头文件our_api之外,它们在它们自己的头文件our_api_soa.h中分别提供。 H。

HTH

2

大多数Microsoft产品?

界面臃肿在屏幕上一次性显示太多,特别是很少使用的元素,或者在功能上令人困惑。描述界面膨胀的一种更简单的方法可能是看一些没有它的东西,试试37signals中的Basecamp。标题中只有几个选项卡和一些链接。

可以通过可折叠窗格(例如使用Javascript)来修复接口膨胀,或者在需要时隐藏较少使用的选择的向下钻取菜单。

+0

记事本不包括;) – 2009-12-12 17:09:52

+0

从我的角度来看最好的例子:Ribbon界面。 – 2009-12-12 17:24:22

+1

@Felix我不同意Ribbon。因为Office有这么多选择,所以需要有一种快速找到它们的方法,而不必提供太多的信息以致用户不知所措。功能区做得很好。例如,现在要做上标,我不需要点击7次 - 我只需点击一次。 – JasCav 2009-12-12 17:31:55

2

界面膨胀是逐渐增加的元素,将可能是一个简单,优雅的界面变成一个充满了按钮,菜单,选项等的地方,破坏应用程序的原始凝聚力感。我想到的一个例子是iTunes。在早期的演绎中,它非常简单,但随着时间的推移,增加了许多可能会变得臃肿的特性(iTunes DJ,Coverflow,Genius)。

1

接口膨胀有时是由试图让每一个功能,点击即可,因为在这个幽默的例子引起:

Too many toolbar buttons

(虽然好笑,这个例子是不是公平的火狐,因为在这个例子中,用户添加了所有这些工具栏)

称为“渐进式公开”的UI设计技术是一种减少界面膨胀。只能将最常用的功能展示为顶级点击。如果您的应用中包含的应用不太常用的功能仍然非常有价值,那么可以按照逻辑方式对其进行分组,例如,在下拉菜单或其他导航元素后面。

+0

+1为渐进式披露 – 2012-01-27 09:49:30

3

想到OO语言,其中全部方法在Object中定义,尽管它们只对某些子类有意义。这将是最极端的例子。

0

接口鼓胀症的一个极端的例子,大多数C++程序员将熟悉是std::basic_string。成员函数的页面向上和向下翻页只有很小的变化,大多数这些函数不一定是成员函数,但可以是字符串实用程序库中的免费函数。

+0

有趣的是,没有人提到JavaScript字符串的接口膨胀的极端例子。 ['String.prototype.fontcolor'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fontcolor)有人吗? – dalle 2016-10-10 08:08:18