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

Investigating effective inspection of object-oriented code
TLDR
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
TLDR
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
  • N. Wilde, R. Huitt
  • Computer Science
    Proceedings. Conference on Software Maintenance 1991
  • 1991
TLDR
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
TLDR
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
TLDR
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
TLDR
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
  • K. Lieberherr
  • Computer Science
    Proceedings. 26th International Conference on Software Engineering
  • 2004
TLDR
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
TLDR
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
  • Oliver Ciupke
  • Computer Science
    Proceedings of Technology of Object-Oriented Languages and Systems - TOOLS 30 (Cat. No.PR00278)
  • 1999
TLDR
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
TLDR
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++
TLDR
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
TLDR
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
TLDR
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
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
TLDR
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
"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
  • K. Lieberherr, A. Riel
  • Computer Science
    Proceedings. [1989] 11th International Conference on Software Engineering
  • 1988
TLDR
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
  • D. Embley, S. Woodfield
  • Physics
    Proceedings. [1989] 11th International Conference on Software Engineering
  • 1988
TLDR
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
TLDR
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
TLDR
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.
...
...