什么是界面臃肿?

时间:2009-12-12 17:00:05

标签: oop anti-patterns

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

7 个答案:

答案 0 :(得分:9)

天儿真好,

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

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

    1. 将API分离为一系列标题和库,以便您可以更轻松地控制实际需要的部分。供应商应自动解决任何内部依赖关系,以便用户不必通过反复试验找出依赖关系,例如:当我只想使用shozbot.h头文件中声明的API中的函数时,我需要包含头文件wibble.h。
    2. 通过在适用的情况下引入重载,使API向后兼容升级。但是您应该将重载的函数分组到类别中,例如如果将新的重载函数集添加到现有API(例如our_api.h)以使其适应新技术(例如SOA),则除了现有标题my_api之外,它们还在它们自己的头文件our_api_soa.h中单独提供。小时。
    3. HTH

答案 1 :(得分:3)

考虑一种OO语言,其中所有方法都在Object中定义,即使它们仅对某些子类有意义。那将是最极端的例子。

答案 2 :(得分:2)

大多数Microsoft产品?

接口膨胀在屏幕上同时出现太多,特别是很少使用的元素,或者它们的功能令人困惑。描述界面臃肿可能更简单的方法是查看没有它的东西,从37signals尝试Basecamp。标题中只有几个标签和一些链接。

接口膨胀可以通过可折叠窗格(例如,使用Javascript)来修复,或者在需要之前隐藏不常使用的选项的深入菜单。

答案 3 :(得分:2)

接口膨胀是逐渐添加的元素,可以将简单,优雅的界面变成一个遍布按钮,菜单,选项等的地方,破坏了应用程序的原始内聚感。我想到的一个例子是iTunes。在它的早期演绎中,它非常简单,但随着时间的推移,已经添加了许多可能有资格作为膨胀的功能(iTunes DJ,Coverflow,Genius)。

答案 4 :(得分:1)

界面臃肿有时是因为试图让每个功能都只需点击一下就可以了,就像这个幽默的例子一样:

Too many toolbar buttons

(虽然很有趣,但这个例子对Firefox不公平,因为在这个例子中用户添加了所有这些工具栏)

称为“渐进式披露”的UI设计技术是减少界面膨胀的一种方法。仅将最常用的功能公开为顶级单击。如果您使用频率较低但仍然有价值的功能可以包含在您的应用中,请按照逻辑方式对其进行分组,例如:在下拉菜单或其他导航元素后面。

答案 5 :(得分:1)

答案 6 :(得分:0)

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