Principle of least astonishment
From Wikipedia, the free encyclopedia
(Redirected from Rule of least surprise)
For the Wikipedia guideline about the principle of least astonishment, see Wikipedia:Principle of least astonishment.
The Principle of Least Astonishment (POLA/PLA) applies to user interface design, software design, and ergonomics. (It is also known as the rule or law of least astonishment, or the principle, rule, or law of least surprise.)
The POLA states that, when two elements of an interface conflict, or are ambiguous, the behaviour should be that which will least surprise the user; in particular a programmer should try to think of the behavior that will least surprise someone who uses the program, rather than that behavior which is natural from knowing the inner workings of the program.[1]
This practice also involves the application of sensible defaults.
Contents |
[edit] Examples
- A user interface may have the behaviour that pressing Ctrl+Q causes the program to quit. The same user interface may have a facility for recording macros, a sequence of keystrokes to be played back later, intended to be able to control all aspects of the program. The user may want to record a keystroke sequence that includes Ctrl+Q as part (most likely the last part) of the macro. The principle says that pressing Ctrl+Q while recording a macro should not quit the program (which would surprise the user), but rather should record the keystroke.
[edit] See also
- DWIM
- Occam's razor
- Law of Demeter (also known as the "principle of least knowledge")
[edit] References
- ^ Joshua Bloch (2006), How to design a good API and why it matters, Association for Computing Machinery, pp. 506-507, http://portal.acm.org/citation.cfm?id=1176622
[edit] External links
- "Applying the Rule of Least Surprise" from The Art of Unix Programming by E.S. Raymond
- Principle of Least Astonishment at Portland Pattern Repository
- Principle of least astonishment on UXPassion.com
- Law of Least Astonishment from The Tao of Programming by Geoffrey James
| This computer programming-related article is a stub. You can help Wikipedia by expanding it. |