: " Heuristics Summary
The following heuristics are taken from Object-Oriented Design Heuristics by
Arthur J. Riel. This book is available from Addison-Wesley May 1996 (ISBN
#0-201-63385-X). The chapter and number designations are derived from the
Classes and Objects: The Building Blocks of the Object-Oriented Paradigm
All data should be hidden within its class.
Users of a class must be dependent on its public interface, but a class should
not be dependent on its users.
Minimize the number of messages in the protocol of a class.
Implement a minimal public interface which all classes understand (e.g.
operations such as copy (deep versus shallow), equality testing, pretty
printing, parsing from a ASCII description, etc.).
Do not put implementation details such as common-code private functions into
the public interface of a class.
Do not clutter the public interface of a class with things that users of that
class are not able to use or are not interested in using..
Classes should only exhibit nil or export coupling with other classes, i.e. a
class should only use operations in the public interface of another class or
have nothing to do with that class.
A class should capture one and only one key abstraction.
Keep related data and behavior in one place.
Spin off non-related information into another class (i.e. non-communicating
Be sure the abstraction that you model are classes and not "