User Tools

Site Tools


principles:rule_of_explicitness

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
Next revisionBoth sides next revision
principles:rule_of_explicitness [2021-09-02 12:38] – old revision restored (2021-05-19 11:24) 65.21.179.175principles:rule_of_explicitness [2021-09-02 20:12] – old revision restored (2021-05-11 22:22) 65.21.179.175
Line 9: Line 9:
   * [[contexts:Object-Oriented Design]]   * [[contexts:Object-Oriented Design]]
   * [[contexts:API Design]]   * [[contexts:API Design]]
-  * [[contexts:Implementation]]+
  
 ===== Principle Statement ===== ===== Principle Statement =====
Line 23: Line 23:
 ===== Rationale ===== ===== Rationale =====
  
-If something is realized explicitly, it is easier to understand. Implicit solutions require the developer to have a deeper understanding of the module as it is necessary to "read between the lines". Implicit solutions also tend to be more complex. So explicit solutions are assumed to be less error-prone and easier to maintain. 
  
 ===== Strategies ===== ===== Strategies =====
Line 34: Line 33:
     * Avoid highly configurable modules. Instead implement varying behavior explicitly.     * Avoid highly configurable modules. Instead implement varying behavior explicitly.
   * Explicitly state which module to use   * Explicitly state which module to use
-    * Avoid importing all classes of a given package/namespace and import the needed classes explicitly. In Java this means not to specify wildcard imports like ''import package.*'' and to avoid static imports. Similarly in Python this means not to use wildcard imports. In C++, do not import entire namespaces (e.g. do not use ''using namespace std;'').+    * Avoid importing all classes of a given package/namespace and import the needed classes explicitly. In Java this means not to specify wildcard imports like ''import package.*'' and to avoid static imports. Similarly in Python this means not to use wildcard imports.
     * Avoid ''with'' statements in Delphi and other languages having constructs that let you invoke methods without explicitly stating the associated object.     * Avoid ''with'' statements in Delphi and other languages having constructs that let you invoke methods without explicitly stating the associated object.
   * Explicitly name parameters   * Explicitly name parameters
Line 91: Line 90:
   * [[Murphy's Law]] (ML):The typical reason for RoE is to avoid unnecessarily complicated solutions and possibilities for defects. Don't loose that goal out of sight.   * [[Murphy's Law]] (ML):The typical reason for RoE is to avoid unnecessarily complicated solutions and possibilities for defects. Don't loose that goal out of sight.
   * [[Model Principle]] (MP): RoE states that [[anti-patterns:primitive obsession]] shall be avoided. Instead more specific types should be used in parameter lists. MP makes this even clearer: In object-orientation objects instead of plain integers or strings are used.   * [[Model Principle]] (MP): RoE states that [[anti-patterns:primitive obsession]] shall be avoided. Instead more specific types should be used in parameter lists. MP makes this even clearer: In object-orientation objects instead of plain integers or strings are used.
-  * [[Law of Leaky Abstractions]] (LLA): Often abstractions create a level of implicitness. Abstraction leaks are one reason why explicit solutions can be considered preferable.+
  
 ==== Principle Collections ==== ==== Principle Collections ====
Line 103: Line 102:
 ===== Description Status ===== ===== Description Status =====
 /* Choose one of the following and comment out the rest: */ /* Choose one of the following and comment out the rest: */
-/*[[wiki:Stub]]*/ +[[wiki:Stub]] 
-[[wiki:Incomplete]]+/*[[wiki:Incomplete]]*/
 /*[[wiki:Complete]]*/ /*[[wiki:Complete]]*/
  
Line 113: Line 112:
   * Tim Peters: //[[http://www.python.org/dev/peps/pep-0020/|The Zen of Python]]//   * Tim Peters: //[[http://www.python.org/dev/peps/pep-0020/|The Zen of Python]]//
  
-===== Discussion ===== 
- 
-Discuss this wiki article and the principle on the corresponding [[talk:principles:Rule of Explicitness|talk page]]. 
principles/rule_of_explicitness.txt · Last modified: 2021-10-18 22:06 by christian