Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly

From WikiContent

(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
-
One of the most common tasks undertaken during software development is interface specification. Interfaces occur at the highest level of abstraction (user interfaces), at the lowest (function interfaces), and at numerous levels in between (class interfaces, namespace interfaces, library interfaces, package interfaces, etc.). Regardless of whether you're working with end users to specify how they'll interact with a system under design, working with other developers to specify an API many will use, or declaring functions private to a class you're working on, interface design will be an important part of your job. If you do it well, the resulting interfaces will be a pleasure to use and will actually boost productivity. If you do it poorly, they'll be frustrating and
+
One of the most common tasks undertaken during software development is interface specification. Interfaces occur at the highest level of abstraction (user interfaces), at the lowest (function interfaces), and at numerous levels in between (class interfaces, library interfaces, package interfaces, etc.). Regardless of whether you're working with end users to specify how they'll interact with a system under design, working with other developers to specify an API, or declaring functions private to a class you're working on, interface design will be an important part of your job. If you do it well, the resulting interfaces will be a pleasure to use and will actually boost productivity. If you do it poorly, your interfaces will be a constant source of frustration and errors.
 +
 
 +
Good interfaces have two crucial characteristics:
 +
* '''They're easy to use correctly.'''
 +
* '''They're hard to use incorrectly.'''

Revision as of 23:16, 10 November 2008

One of the most common tasks undertaken during software development is interface specification. Interfaces occur at the highest level of abstraction (user interfaces), at the lowest (function interfaces), and at numerous levels in between (class interfaces, library interfaces, package interfaces, etc.). Regardless of whether you're working with end users to specify how they'll interact with a system under design, working with other developers to specify an API, or declaring functions private to a class you're working on, interface design will be an important part of your job. If you do it well, the resulting interfaces will be a pleasure to use and will actually boost productivity. If you do it poorly, your interfaces will be a constant source of frustration and errors.

Good interfaces have two crucial characteristics:

  • They're easy to use correctly.
  • They're hard to use incorrectly.
Personal tools