Design Before the Pattern Name
Concrete change pressures that make roles, valid construction, visible dependencies, and narrow collaboration necessary.
- A Class Name Should Describe a Role
- Invalid State Should Be Difficult to Construct
- Boolean Parameters Hide Different Operations
- A Primitive Can Hide a Domain Decision
- A Service Class Can Become a Procedural Junk Drawer
- Dependencies Should Be Visible at Construction
- Framework Convenience Has a Boundary
- Global State Makes Local Reasoning Impossible
- Construction Should Not Hide Durable Writes
- A Method Should Tell You What Changed
- The Type a Caller Receives Defines the Role
- Design Becomes Valuable When the Next Change Arrives