User Tools

Site Tools


principles:easy_to_use_and_hard_to_misuse

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
principles:easy_to_use_and_hard_to_misuse [2020-10-12 12:38] – old revision restored (2013-05-19 22:09) 159.69.186.191principles:easy_to_use_and_hard_to_misuse [2021-10-18 21:29] (current) – +++ restored +++ christian
Line 3: Line 3:
 ===== Variants and Alternative Names ===== ===== Variants and Alternative Names =====
  
 +  * Pit of Success
 ===== Context ===== ===== Context =====
 /* fill in contexts here: */ /* fill in contexts here: */
-  * [[contexts:Object-Oriented Design]] +  * [[contexts:Object-Oriented Design]] 
 +  * [[contexts:API Design]] 
 +  * [[contexts:User Interface Design]]
  
  
Line 77: Line 79:
   * [[Invariant Avoidance Principle]] (IAP): One reason for a possible misuse of a module is an invariant. For example there might be a method which takes a list and an index where the index has to be within the bounds of the list. Each of these invariants imposes further possibilities for misuse of the module. So it is better to avoid them.   * [[Invariant Avoidance Principle]] (IAP): One reason for a possible misuse of a module is an invariant. For example there might be a method which takes a list and an index where the index has to be within the bounds of the list. Each of these invariants imposes further possibilities for misuse of the module. So it is better to avoid them.
   * [[Information Hiding/Encapsulation]] (IH/E): A module should be properly encapsulated in order to make it easy to use and hard to misuse.   * [[Information Hiding/Encapsulation]] (IH/E): A module should be properly encapsulated in order to make it easy to use and hard to misuse.
 +  * [[Law of Leaky Abstractions]] (LLA): The more an abstraction leaks, the less it can be considered hard to misuse.
  
 ==== Principle Collections ==== ==== Principle Collections ====
Line 96: Line 99:
   * [[http://ozlabs.org/~rusty/index.cgi/tech/2008-03-18.html|APIs: "Easy to Use" vs "Hard to Misuse"]]   * [[http://ozlabs.org/~rusty/index.cgi/tech/2008-03-18.html|APIs: "Easy to Use" vs "Hard to Misuse"]]
   * [[http://ozlabs.org/~rusty/index.cgi/tech/2008-03-30.html|How Do I Make This Hard to Misuse?]]   * [[http://ozlabs.org/~rusty/index.cgi/tech/2008-03-30.html|How Do I Make This Hard to Misuse?]]
 +
 +===== Discussion =====
 +
 +Discuss this wiki article and the principle on the corresponding [[talk:principles:Easy To Use And Hard To Misuse|talk page]].
  
principles/easy_to_use_and_hard_to_misuse.1602499138.txt.gz · Last modified: 2020-10-12 12:38 by 159.69.186.191