Design Before the Pattern Name
Start with the change that hurts. The useful role, invariant, or dependency usually becomes obvious before its pattern name does.
- 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