Chapter 32. Encapsulate Behavior, Not Just State
IN SYSTEMS THEORY, containment is one of the most useful constructs when dealing with large and complex system structures. In the software industry, the value of containment or encapsulation is well understood. Containment is supported by programming language constructs such as subroutines and functions, modules and packages, classes, and so on.
Modules and packages address the larger-scale needs for encapsulation, while classes,
subroutines, and functions address the more fine-grained aspects of the matter. Over the
years, I have discovered that classes seem to be one of the hardest encapsulation
constructs for developers to get right. Itâs not uncommon to find a class with a single
3,000-line main
method, or a class with only set and
get methods for its primitive attributes. These examples demonstrate that the developers
involved have not fully understood object-oriented thinking, having failed to take
advantage of the power of objects as modeling constructs. For developers familiar with
the terms POJO (Plain Old Java Object) and POCO (Plain Old C# Object or Plain Old CLR Object), this
was the intent in going back to the basics of OO as a modeling paradigmâthe objects are
plain and simple, but not dumb.
An object encapsulates both state and behavior, where the behavior is defined by the actual state. Consider a door ...
Get 97 Things Every Programmer Should Know now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.