http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/ Examples of how to make suggestions to correct violations: http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/oscar-patterns/LOD/apply-LOD.html http://www.ccs.neu.edu/research/demeter/papers/LoD/paper-sources/ you may also find useful information in the commented out lines @BOOK{hunt-thomas:TPP, AUTHOR = "Andrew Hunt and David Thomas", TITLE = "The Pragmatic Programmer", PUBLISHER = "Addison-Wesley", YEAR = "2000", SERIES = "", VOLUME = "", ISBN = "0-201-61622-X", } @BOOK{larman:uml-patterns, AUTHOR = "Craig Larman", TITLE = "{Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design}", PUBLISHER = "Prentice Hall", YEAR = "1997", SERIES = "", VOLUME = "" } // House = List(Room). Not Good: for each room r do { Valve v = r.getValue(); if (r.temperature() < r.desiredTemperature() and r.occupied()) v.command(OPEN) else v.command(CLOSE): } Good: for each room r do { if (r.needsHeat()) r.openValve() else r.closeValve(); } http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/LoD-AP for metrics helpful in reengineering.