Tell, Don't Ask
Tell the object what you want done; do not ask for its state and make the decision elsewhere.
Workflow
Find code that gets state, branches on it, then updates or commands the same object.
Name the intention behind the external decision.
Move that behavior to the object that owns the state.
Replace getters with intention-revealing methods where possible.
Keep DTO, serialization, logging, and UI projection exceptions explicit.
Checks
Getter plus
ifplus setter is a strong smell.Feature Envy means behavior is closer to another object's data than its own.
Avoid adding anemic pass-through methods; move real decisions.
Reference
Read references/patterns.md for refactoring patterns.
Detailed Reference
For non-trivial implementation, review, or refactoring work, read references/details.md before giving final guidance. It contains the detailed rules, examples, smells, and migration notes that do not belong in the short invocation body.
Output
Return the ask pattern, the moved behavior, revised API, and code changes.