"Tax and Import Duty look the same, so we should extract this into a shared utility."
But they are not the same thing.
Invoice Tax and Import Duty represent completely different business rules.
Today they just happen to share the same formula.
6 months later…
- Tax: category-based rules
- Import Duty: country-based rules
Now the shared abstraction becomes a bug factory.
✅ DRY is about knowledge, not code
Tax and Import Duty represent different business rules, so they stay separate.
Same implementation. Different business rules.
6 months later…
- Tax: category-based rules
- Import Duty: country-based rules
No shared abstraction to break.
No unrelated changes forcing each other.
No accidental coupling.
Full article: journal.optivem.com/p/d…
------
Join 5,400+ engineers: journal.optivem.com