Assuring good style for object-oriented programs
@article{Lieberherr1989AssuringGS, title={Assuring good style for object-oriented programs}, author={Karl J. Lieberherr and Ian M. Holland}, journal={IEEE Software}, year={1989}, volume={6}, pages={38-48} }
The language-independent Law of Demeter, which encodes the ideas of encapsulation and modularity in an easy-to-follow form for object-oriented programmers, is presented. [] Key Method Principles covered by the law include coupling control, information hiding, information restriction, information localization, and structured induction. An example is given to show how the law is applied, and valid violations are identified. It is shown how to transform a method that does not satisfy the law into one that does…
Figures from this paper
306 Citations
Investigating effective inspection of object-oriented code
- Business
- 2002
This thesis shows that the way in which the objectoriented paradigm distributes related functionality can have a serious impact on code inspection and, to address this problem, it develops and empirically evaluates three code reading techniques.
Intuitiveness of Class and Object Encapsulation
- Computer Science
- 2009
Using a survey of both novice and experienced software developers, it is shown that the encapsulation boundary supported by mainstream statically typed languages does not coincide with the intuition of most developers.
Maintenance support for object oriented programs
- Computer ScienceProceedings. Conference on Software Maintenance 1991
- 1991
Some of the difficulties that may be expected in the maintenance of software developed using the new object oriented languages are described and suggestions are made concerning maintenance in firefighting situations.
Integrating Adaptive Programming into Existing Object-Oriented Analysis and Design Methods: Do It Yourself Adaptiveness
- Computer ScienceOOIS
- 1996
The theory and instrumentation of method engineering is applied to define a clear, concise and ready-to-use method fragment to support adaptive functionality specifications.
Maintenance Support for Object-Oriented Programs
- Computer ScienceIEEE Trans. Software Eng.
- 1992
The paper analyzes problems of dynamic binding, object dependencies, dispersed program structure, control of polymorphism, high-level understanding, and detailed code understanding of software developed using the new object oriented languages.
Refactorings to evolve object-oriented systems with aspect-oriented concepts
- Computer Science
- 2005
This thesis documents a collection of novel refactorings enabling the extraction of crosscutting concerns from object-oriented legacy source code and the subsequent restructuring of the aspects thus obtained, and proposes several novel aspectoriented code smells.
Controlling the complexity of software designs
- Computer ScienceProceedings. 26th International Conference on Software Engineering
- 2004
The ramifications of the Laws of Demeter (LoD and LoDC) are explored to achieve better of concerns through improved software processes supported by language mechanisms that are implemented using novel applications of automata theory.
Characterising the Use of Encapsulation in Object Oriented Systems November
- Computer Science
- 2009
A survey is conducted to reveal which encapsulation policy is more intuitive, and it is found that novices’ intuition about encapsulation differs from the encapsulation mechanisms supported by languages such as Java and C#.
Automatic detection of design problems in object-oriented reengineering
- Computer ScienceProceedings of Technology of Object-Oriented Languages and Systems - TOOLS 30 (Cat. No.PR00278)
- 1999
This work presents a technique for analyzing legacy code, specifying frequent design problems as queries and locating the occurrences of these problems in a model derived from source code, and shows that the task of problem detection in reengineering can be automated to a large degree.
On aspect-oriented programming for enforcing software design rules
- Computer Science
- 2010
It is argued that the shadow model of AspectJ-like Aspect-oriented programming languages is a useful and suitable meta-model for building customizable software design rule static checkers for programs written in Java-like object-oriented languages.
References
SHOWING 1-10 OF 24 REFERENCES
Comments on “the law of demeter” and C++
- Computer ScienceSIGP
- 1988
A rule of good style for object-oriented programming has recently been put forward, actually in several flavours, and a new language-specific formulation is presented, argumenting that it is better in class than object flavour.
Object-oriented design: a responsibility-driven approach
- Computer ScienceOOPSLA '89
- 1989
This work argues that design practices which take a data-driven approach fail to maximize encapsulation because they focus too quickly on the implementation of objects, and proposes an alternative object-oriented design method which takes a responsibility- driven approach.
The Modular Structure of Complex Systems
- Computer ScienceIEEE Transactions on Software Engineering
- 1985
This paper shows how the software design technique known as information hiding, or abstraction, can be supplemented by a hierarchically structured document, which it is called a module guide, intended to allow both designers and maintainers to identify easily the parts of the software that they must understand, without reading irrelevant details.
An introduction to object-oriented programming
- Computer Science
- 1991
From the Publisher:
Discover the basic concepts of object-oriented programming and the elements of object-oriented design. Timothy Budd teaches objects, class methods, inheritance (including…
Object-oriented programming with class dictionaries
- Computer ScienceLISP Symb. Comput.
- 1988
It is demonstrated that class dictionaries are ideal for simplifying object-oriented programming and makes interesting links between language design, data structure design, and data-base design.
Abstraction and Specification in Program Development
- Computer Science
- 1986
"Abstraction and Specification in Program Development" offers professionals in program design and software engineering a methodology that will enable them to construct programs that are reliable and…
Demeter: a case study of software growth through parameterized classes
- Computer ScienceProceedings. [1989] 11th International Conference on Software Engineering
- 1988
Demeter is a system designed for the development of large software projects using a software design methodology which focuses on growing rather than building software, and provides a facility for the reuse of software which was developed in previous software projects.
Assessing the quality of abstract data types written in Ada
- PhysicsProceedings. [1989] 11th International Conference on Software Engineering
- 1988
It is argued that an ADT that contains and exportsonly one domain and exports only operations that pertain to that domain has the best cohesive properties, and that ADTs that make neither explicit nor implicit assumptions about other ADTs in the system have the best coupling properties.
Object-Oriented Design with Applications
- Computer Science
- 1990
Booch gives practical guidance for the construction of complex object-oriented design methods and draws on his extensive experience in developing very large software systems to illuminate the complex challenges and potential problems developers often face.
Laws for Communicating Parallel Processes
- Computer ScienceIFIP Congress
- 1977
This report describes research done at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology on parallel processes, parallel or asynchronous computations, partial orders of events, Actor theory.