User Tools

Site Tools


principles:information_expert

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
principles:information_expert [2012-12-17 23:21]
christian [Further Reading] link
principles:information_expert [2013-02-10 22:47]
christian relations; IE => TdA/IE
Line 1: Line 1:
-====== Information Expert (IE) ======+====== ​Tell Don't Ask/Information Expert (TdA/IE) ======
  
 ===== Variants and Alternative Names ===== ===== Variants and Alternative Names =====
  
   * Expert   * Expert
-  * Tell Don't Ask 
   * Do It Myself   * Do It Myself
  
Line 13: Line 12:
  
  
-===== Definition ​=====+===== Principle Statement ​=====
  
 Assign a responsibility to this [[glossary:​module]] which has the largest subset of the required information. Assign a responsibility to this [[glossary:​module]] which has the largest subset of the required information.
Line 26: Line 25:
  
 When this principle is not adhered to, then a module has a responsibility for which it is lacking some information. So in order to fulfill the task the module has to first acquire the needed information by invoking other modules. This increases the dependencies between the modules (which may lead to[[glossary:​ripple effects]]). When this principle is not adhered to, then a module has a responsibility for which it is lacking some information. So in order to fulfill the task the module has to first acquire the needed information by invoking other modules. This increases the dependencies between the modules (which may lead to[[glossary:​ripple effects]]).
 +
 +
 +===== Strategies =====
  
  
Line 35: Line 37:
 ===== 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]] 
 +*/
  
 ===== Relations to Other Principles ===== ===== Relations to Other Principles =====
Line 45: Line 48:
 ==== Generalizations ==== ==== Generalizations ====
  
-  * [[principles:Low Coupling]] Adhering to the information expert principle leads to low coupling as there is less need to communicate with other modules to get the necessary information. +  * [[Low Coupling]] Adhering to the information expert principle leads to low coupling as there is less need to communicate with other modules to get the necessary information. 
-  * [[principles:High Cohesion]] Adhering to information expert also means that a module only has responsibilities which belong together. So this increases cohesion.+  * [[High Cohesion]] Adhering to information expert also means that a module only has responsibilities which belong together. So this increases cohesion.
  
 ==== Specializations ==== ==== Specializations ====
  
 ==== Contrary Principles ==== ==== Contrary Principles ====
 +
 +  * [[More Is More Complex]] (MIMC): Adhering to TdA/IE sometimes results in adding further methods.
 +  * [[Principle of Separate Understandability]] (PSU): Assigning responsibilities using TdA/IE bears the danger of violating PSU as responsibilities are assigned based on data availability instead of separate understandability.
  
 ==== Complementary Principles ==== ==== Complementary Principles ====
  
-  * [[principles:Model Principle]]+  * [[Model Principle]] ​(MP): TdA/IE tells how to distribute functionality among the natural classes which are created according to the Model Principle.
  
 ==== Principle Collections ==== ==== Principle Collections ====
Line 76: Line 82:
   * [[wp>​GRASP_(object-oriented_design)#​Information_Expert]]   * [[wp>​GRASP_(object-oriented_design)#​Information_Expert]]
   * Andrew Hunt and David Thomas: //​[[http://​www.ccs.neu.edu/​research/​demeter/​related-work/​pragmatic-programmer/​jan_03_enbug.pdf|The Art of Enbugging]]//​   * Andrew Hunt and David Thomas: //​[[http://​www.ccs.neu.edu/​research/​demeter/​related-work/​pragmatic-programmer/​jan_03_enbug.pdf|The Art of Enbugging]]//​
 +
principles/information_expert.txt · Last modified: 2013-05-19 22:09 (external edit)