principles:easy_to_use_and_hard_to_misuse
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
principles:easy_to_use_and_hard_to_misuse [2020-10-12 12:39] – old revision restored (2013-02-11 21:15) 159.69.186.191 | principles:easy_to_use_and_hard_to_misuse [2021-10-13 08:19] – old revision restored (2021-09-02 12:26) 194.209.25.108 | ||
---|---|---|---|
Line 11: | Line 11: | ||
===== Principle Statement ===== | ===== Principle Statement ===== | ||
+ | A module shall be easy to use and hard to misuse. | ||
===== Description ===== | ===== Description ===== | ||
Line 19: | Line 20: | ||
===== Strategies ===== | ===== Strategies ===== | ||
+ | |||
+ | This is a very general principle so there is a large variety of possible strategies to adhere more to this principle largely depending on the given design problem: | ||
+ | |||
+ | * Make use of static typing, so the compiler will report faults | ||
+ | * Make the interface simple, so there will be fewer usage defects (see [[Keep It Simple Stupid|KISS]]) | ||
+ | * Use the same mechanisms wherever reasonably possible (see [[Uniformity Principle|UP]]) | ||
+ | * Use consistent naming and models throughout the design (see [[Uniformity Principle|UP]] and [[Model Principle|MP]]) | ||
+ | * Avoid Preconditions (see [[Invariant Avoidance Principle]]) | ||
+ | * ... | ||
+ | |||
+ | |||
+ | ===== Caveats ===== | ||
+ | |||
+ | See section [[#contrary principles]]. | ||
Line 42: | Line 57: | ||
* [[Principle of Least Surprise]] (PLS): A module is easy to use if there is no surprise in how it works. | * [[Principle of Least Surprise]] (PLS): A module is easy to use if there is no surprise in how it works. | ||
- | * [[Uniformity Principle]] (UP): Uniform interfaces are easier to use than others. | ||
==== Contrary Principles ==== | ==== Contrary Principles ==== | ||
Line 71: | Line 85: | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
+ |
principles/easy_to_use_and_hard_to_misuse.txt · Last modified: 2021-10-18 21:29 by christian