| 1 |
Self Encapsulate Field |
Access fields via getters/setters even internally |
| 2 |
Replace Data Value with Object |
Promote primitives to objects with behavior |
| 3 |
Change Value to Reference |
Share identical objects via registry |
| 4 |
Change Reference to Value |
Simplify small, immutable objects |
| 5 |
Replace Array with Object |
Name array elements with typed fields |
| 6 |
Duplicate Observed Data |
Separate GUI data from domain data |
| 7 |
Unidirectional to Bidirectional |
Add back-pointer for mutual navigation |
| 8 |
Bidirectional to Unidirectional |
Remove unneeded association direction |
| 9 |
Replace Magic Number |
Use named constants for clarity |
| 10 |
Encapsulate Field |
Make public fields private with accessors |
| 11 |
Encapsulate Collection |
Return read-only views, provide add/remove |
| 12 |
Replace Type Code with Class |
Use class objects instead of int codes |
| 13 |
Type Code with Subclasses |
Use polymorphism for type-dependent behavior |
| 14 |
Type Code with State/Strategy |
Handle runtime-changeable type codes |
| 15 |
Replace Subclass with Fields |
Eliminate constant-only subclasses |