Aly
Aly

Reputation: 16275

What is interface bloat?

Can someone explain to me what interface bloat in OOP is (preferably with an example).

Upvotes: 4

Views: 3429

Answers (7)

Andreas Brinck
Andreas Brinck

Reputation: 52549

An extreme example of interface bloat that most C++ programmers will be familiar with is std::basic_string. Page up and page down of member functions with only small variations, most of these functions wouldn't have had to be member functions but could have been free functions in a string utility library.

Upvotes: 1

akuhn
akuhn

Reputation: 27793

Think of an OO language where all methods are defined in Object, even though they are only meaningful for some subclasses. That would be the most extreme example.

Upvotes: 3

user175839
user175839

Reputation: 31

Interface bloat is sometimes caused by trying to have every feature one click away, as in this humorous example:

Too many toolbar buttons

(Although funny, this example isn't fair to Firefox because in this example the user added all those toolbars)

A UI design technique called "progressive disclosure" is one way to reduce interface bloat. Only expose the most frequently-used features as a top-level click. If you have less-frequently-used features that are still valuable enough to include in your app, group them in a logical way, e.g. behind a dropdown menu or other navigation element.

Upvotes: 1

Rob Wells
Rob Wells

Reputation: 37133

G'day,

Assuming you mean API and not GUI, for me I/F bloat can happen in several ways.

  1. An API just keeps getting extended and extended with new functions without any form of segregation so you finish up with a monolithic header file that becomes hard to use.
  2. The functions declared in an existing API keep getting new parameters added to their signatures so you have to keep upgrading and your existing applications are not backwards compatible.
  3. Functions in an existing API keep getting overloaded with very similar variants which can lead to difficulty selecting the relevant function to be used.

To help with this you can:

  1. Separate out the API into a series of headers and libraries so you can more easily control what parts you actually need. Any internal dependencies should be resolved automatically by the vendor so the user doesn't have to find out the dependencies by trial and error, e.g. that I need to include header file wibble.h when I only wanted to use the functions in the API declared in the shozbot.h header file.
  2. Make upgrades to the API backwards compatible by introducing overloading where applicable. But you should group the overloaded functions into categpories, e.g. if new set of overloaded functions are added to an existing API, say our_api.h, to adapt it to a new technology, say SOA, then they are provided separately in their own header file our_api_soa.h in addition to the existing header our_api.h.

HTH

Upvotes: 10

Nate B
Nate B

Reputation: 6356

Interface bloat is the gradual addition of elements that turn what may been a simple, elegant interface into one littered with buttons, menus, options, etc. all over the place that ruin the original cohesive feel of the application. One example that comes to mind for me is iTunes. In it's early renditions, it was quite simple, but has, over time, added quite a lot of features that might qualify as bloat (iTunes DJ, Coverflow, Genius).

Upvotes: 2

jbnunn
jbnunn

Reputation: 6355

Most Microsoft products?

Interface bloat is having too much on the screen at once, particularly elements that are little used, or are confusing in their function. Probably an easier way to describe interface bloat is to look at something that does not have it, try Basecamp from 37signals. There are only a few tabs, and a few links in the header.

Interface bloat can be remedied by collapsable panes (using Javascript, for example), or drill-down menus that hide less-often used choices until they are needed.

Upvotes: 2

Related Questions