principles:principle_of_least_surprise
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:principle_of_least_surprise [2021-03-25 15:44] – old revision restored (2021-02-01 23:35) 95.216.172.193 | principles:principle_of_least_surprise [2021-09-02 10:48] – old revision restored (2021-05-11 22:18) 65.21.179.175 | ||
---|---|---|---|
Line 26: | Line 26: | ||
===== Strategies ===== | ===== Strategies ===== | ||
+ | * Separate methods that change an object (commands) from methods asking the object a question (queries) (see [[Command-Query Separation|CQS]]) | ||
+ | * This especially means that a query method should not alter the observable object state | ||
+ | * Name all modules in a way that clearly communicates what the module is and does | ||
+ | * Names of classes shall be nouns representing a specific (real-world) concept (see [[Model Principle|MP]]) | ||
+ | * Names of '' | ||
+ | * Names of command methods shall be verbs (in imperative form) | ||
+ | * Names of query methods shall start with get- or is- | ||
+ | * Names of mathematical functions or the like shall be named by the respective concept (like '' | ||
+ | * ... | ||
+ | * Avoid " | ||
+ | * [[When in doubt, use brute force]]((http:// | ||
+ | * Tend to use the first solution that comes in mind | ||
===== Caveats ===== | ===== Caveats ===== | ||
Line 53: | Line 65: | ||
==== Specializations ==== | ==== Specializations ==== | ||
+ | * [[Command-Query Separation]] (CQS) | ||
==== Contrary Principles ==== | ==== Contrary Principles ==== | ||
Line 66: | Line 79: | ||
{{page> | {{page> | ||
- | ===== Example | + | ===== Examples |
principles/principle_of_least_surprise.txt · Last modified: 2021-10-18 22:15 by christian