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 [2013-02-06 21:58] – relations.. christian | 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 41: | Line 56: | ||
==== Specializations ==== | ==== Specializations ==== | ||
- | * [[Principle of Least Surprise]] (PLS): | + | * [[Principle of Least Surprise]] (PLS): |
==== Contrary Principles ==== | ==== Contrary Principles ==== | ||
Line 49: | Line 64: | ||
==== Complementary Principles ==== | ==== Complementary Principles ==== | ||
- | * [[Model Principle]] | + | * [[Model Principle]] (MP): An interface that is crafted according to the model is easier to use than one that is not. |
- | * [[Uniformity Principle]] | + | * [[Invariant |
- | * [[Fail Fast]] (FF): | + | * [[Information Hiding/ |
- | * [[Invariants | + | |
==== Principle Collections ==== | ==== Principle Collections ==== | ||
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