Keep related data and behavior in one place

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m
m (Reverted edits by Ebybymic (Talk); changed back to last version by Joey Scarr)
 
(4 intermediate revisions by 4 users not shown)
Line 2: Line 2:
  
 
If two or more areas are actually of the same key abstraction they should be captured in the same class. As soon as there are any "get" operations that might imply that this heuristic is being violated.
 
If two or more areas are actually of the same key abstraction they should be captured in the same class. As soon as there are any "get" operations that might imply that this heuristic is being violated.
 +
 +
-- ''Explanation'': If the object retrieved by the get operation is further used to call another function or obtain another object then this is a violation. A rule of thumb is whenever you see consecutive use of "." operations then it's very likely to be a violation of this rule. A simple example is:
 +
student.getMarks().calculateGrade()
 +
 +
This example also violates the [[Law of Demeter]].
  
 
==See also==
 
==See also==
 
*[[Tell, don't ask]]
 
*[[Tell, don't ask]]
 +
*[[Law of Demeter]]
  
 
[[Category:Riel's heuristics]]
 
[[Category:Riel's heuristics]]

Latest revision as of 03:11, 25 November 2010

Keep related data and behavior in one place. --Riel's Heuristic 2.9, Arthur Riel 1996

If two or more areas are actually of the same key abstraction they should be captured in the same class. As soon as there are any "get" operations that might imply that this heuristic is being violated.

-- Explanation: If the object retrieved by the get operation is further used to call another function or obtain another object then this is a violation. A rule of thumb is whenever you see consecutive use of "." operations then it's very likely to be a violation of this rule. A simple example is:

student.getMarks().calculateGrade()

This example also violates the Law of Demeter.

See also

Personal tools