Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Abstraction and specification in program development
Abstraction and specification in program development
The C++ programming language
Object oriented programming: an evolutionary approach
Object oriented programming: an evolutionary approach
An introduction to Trellis/Owl
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Inheritance and the development of encapsulated software systems
Research directions in object-oriented programming
Assessing the quality of abstract data types written in ADA
ICSE '88 Proceedings of the 10th international conference on Software engineering
Demeter: a case study of software growth through parameterized classes
ICSE '88 Proceedings of the 10th international conference on Software engineering
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
The Elements of Programming Style
The Elements of Programming Style
Comments on “the law of demeter” and C++
ACM SIGPLAN Notices
Formulations and benefits of the law of demeter
ACM SIGPLAN Notices
Contributions to teaching object-oriented design and programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Object-oriented design: a responsibility-driven approach
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Surveying current research in object-oriented design
Communications of the ACM
Object-oriented specification of reactive systems
ICSE '90 Proceedings of the 12th international conference on Software engineering
Biblio of object-oriented system development
ACM SIGSOFT Software Engineering Notes
Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Introduction to the literature on object-oriented design, programming, and languages
ACM SIGPLAN OOPS Messenger
A research typology for object-oriented analysis and design
Communications of the ACM - Special issue on analysis and modeling in software development
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
The object-oriented brewery: a comparison of two object-oriented development methods
ACM SIGSOFT Software Engineering Notes
Measurement-driven restructuring of object oriented applications
OOPSLA '92 Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum)
Automatic inheritance hierarchy restructuring and method refactoring
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
ACM Computing Surveys (CSUR)
A comparison of experiences with the maintenance of object-oriented systems: Ada vs. C++
TRI-Ada '90 Proceedings of the conference on TRI-ADA '90
Automatic method refactoring using weighted dependence graphs
Proceedings of the 21st international conference on Software engineering
CSC '91 Proceedings of the 19th annual conference on Computer Science
Proceedings of the 24th International Conference on Software Engineering
The measurement of software design quality
Annals of Software Engineering
Assuring Good Style for Object-Oriented Programs
IEEE Software
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Chidamber and Kemerer's Metrics Suite: A Measurement Theory Perspective
IEEE Transactions on Software Engineering
Formal Foundations for Object-Oriented Data Modeling
IEEE Transactions on Knowledge and Data Engineering
Architecture, design, implementation
Proceedings of the 25th International Conference on Software Engineering
Automatic Detection of Design Problems in Object-Oriented Reengineering
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
Controlling the Complexity of Software Designs
Proceedings of the 26th International Conference on Software Engineering
Evolving an embedded domain-specific language in Java
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
ClassCompass: A software design mentoring system
Journal on Educational Resources in Computing (JERIC)
Dynamic ownership in a dynamic language
Proceedings of the 2007 symposium on Dynamic languages
Embedded agents: a paradigm for mobile services
International Journal of Web and Grid Services
Quality Patterns for Conceptual Modelling
ER '08 Proceedings of the 27th International Conference on Conceptual Modeling
A Method for Creating Teaching Materials of Practical Object-Oriented Methods Education
Proceedings of the 2006 conference on Learning by Effective Utilization of Technologies: Facilitating Intercultural Understanding
Achieving Agility through Architecture Visibility
QoSA '09 Proceedings of the 5th International Conference on the Quality of Software Architectures: Architectures for Adaptive Software Systems
A cohesion metric proposal for object-oriented systems: COMIAS
ICCOMP'09 Proceedings of the WSEAES 13th international conference on Computers
Agent-based coordination for the sensor web
Proceedings of the 2010 ACM Symposium on Applied Computing
ACS'10 Proceedings of the 10th WSEAS international conference on Applied computer science
Assessing architectural evolution: a case study
Empirical Software Engineering
Agent factory micro edition: a framework for ambient applications
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part III
Evaluating agent-oriented programs: towards multi-paradigm metrics
ProMAS'10 Proceedings of the 8th international conference on Programming Multi-Agent Systems
Join point interfaces for safe and flexible decoupling of aspects
ACM Transactions on Software Engineering and Methodology (TOSEM)
Visualizing protected variations in evolving software designs
Journal of Systems and Software
Hi-index | 0.02 |
We introduce a simple, programming language independent rule (known in-house as the Law of Demeter™) which encodes the ideas of encapsulation and modularity in an easy to follow form for the object-oriented programmer. You tend to get the following related benefits when you follow the Law of Demeter while minimizing simultaneously code duplication, the number of method arguments and the number of methods per class: Easier software maintenance, less coupling between your methods, better information hiding, narrower interfaces, methods which are easier to reuse, and easier correctness proofs using structural induction. We discuss two important interpretations of the Law (strong and weak) and we prove that any object-oriented program can be transformed to satisfy the Law. We express the Law in several languages which support object-oriented programming, including Flavors, Smalltalk-80, CLOS, C++ and Eiffel.