User Tools

Site Tools


principles:law_of_demeter

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
principles:law_of_demeter [2012-12-18 12:01] – created christianprinciples:law_of_demeter [2021-09-02 12:32] – old revision restored (2021-05-11 22:01) 65.21.179.175
Line 27: Line 27:
  
 ===== Strategies ===== ===== Strategies =====
 +
 +
 +===== Caveats =====
 +
 +See section [[#contrary principles]].
  
  
Line 34: Line 39:
 ===== Evidence ===== ===== Evidence =====
 /* Comment out what is not applicable and explain the rest: */ /* Comment out what is not applicable and explain the rest: */
-/*[[wiki:Proposed]] +/
-[[wiki:Examined]] +  * [[wiki:Proposed]] 
-[[wiki:Accepted]] +  [[wiki:Examined]] 
-[[wiki:Questioned]]*/+  [[wiki:Accepted]] 
 +  [[wiki:Questioned]] 
 +*/
  
  
Line 44: Line 51:
 ==== Generalizations ==== ==== Generalizations ====
  
-  * [[principles:Low Coupling]]: The goal of LoD is to reduce coupling by reducing the knowledge of a class about other classes. +  * [[Low Coupling]] (LC): The goal of LoD is to reduce coupling by reducing the knowledge of a class about other classes. 
-  * [[principles:Tell, Don't Ask]]+  * [[Tell, Don't Ask/Information Expert]] (TdA/IE): LoD is more specific than TdA/IE because TdA/IE can be applied in a wider context (e.g. for responsibility assignment). Applying TdA leads to solutions which are good according to LoD. Note that the reverse is not true: Accoring to LoD you may get and set values from an object passed as a parameter to a method.
  
 ==== Specializations ==== ==== Specializations ====
Line 51: Line 58:
 ==== Contrary Principles ==== ==== Contrary Principles ====
  
-  * [[principles:More Is More Complex]]: Adhering to the Law of Demeter often results in additional methods. +  * [[More Is More Complex]] (MIMC): Adhering to the Law of Demeter often results in additional methods. 
-  * [[principles:Low Coupling]]: Adhering to the Law of Demeter may create tramp couplings which are bad. +  * [[Low Coupling]] (LC): Adhering to the Law of Demeter may create tramp couplings which are bad. 
-  * [[principles:High Cohesion]]: Adhering to the Law of Demeter often results in additional methods that mirror methods of aggregated objects. As these objects have other responsibilities, the additional methods have fewer commonalities with the "real" methods of the class, which results in a lower cohesion.+  * [[High Cohesion]] (HC): Adhering to the Law of Demeter often results in additional methods that mirror methods of aggregated objects. As these objects have other responsibilities, the additional methods have fewer commonalities with the "real" methods of the class, which results in a lower cohesion.
  
 ==== Complementary Principles ==== ==== Complementary Principles ====
Line 60: Line 67:
  
  
-===== Example =====+===== Examples =====
  
  
Line 80: Line 87:
   * Phil Haack: //[[http://haacked.com/archive/2009/07/14/law-of-demeter-dot-counting.aspx|The Law of Demeter Is Not A Dot Counting Exercise]]//   * Phil Haack: //[[http://haacked.com/archive/2009/07/14/law-of-demeter-dot-counting.aspx|The Law of Demeter Is Not A Dot Counting Exercise]]//
   * [[http://www.ccs.neu.edu/home/lieber/LoD.html|Law of Demeter]]   * [[http://www.ccs.neu.edu/home/lieber/LoD.html|Law of Demeter]]
 +
principles/law_of_demeter.txt · Last modified: 2021-10-18 21:52 by christian