Loading page…
One invoice class with three owners, a coupon ladder reopened for every coupon, and a view-only account that breaks a bill run: single responsibility as one reason to change, open and closed as new behaviour arriving as new code, Liskov substitution as keeping a parent's promises, and where each principle is over-applied.
An invoice lands in your inbox.