If you used good objects, you’ll only have to make the change in one place
IMO that’s generally a retroactive statement because in practice have to be lucky for that to be true. An abstraction along one dimension – even a good one, will limit flexibility in some other dimension.
Occasionally, everything comes into alignment and an opportunity appears to reliably-ish predict the correct abstraction the future will need.
Most every other time, you’re better off avoiding the possibility of the really costly bad abstraction by resisting the urge to abstract preemptively.
That’s a fair assessment. It’s kind of like the rule for premature optimization: don’t.
With experience you might get some intuition about when it’s good to lean into inheritance. We were definitely lacking experience at that point though.
OOP is a pretty powerful paradigm, which means it’s also easy to provide enough rope to hang yourself with. See also just about any other meme here about OOP
IMO that’s generally a retroactive statement because in practice have to be lucky for that to be true. An abstraction along one dimension – even a good one, will limit flexibility in some other dimension.
Occasionally, everything comes into alignment and an opportunity appears to reliably-ish predict the correct abstraction the future will need.
Most every other time, you’re better off avoiding the possibility of the really costly bad abstraction by resisting the urge to abstract preemptively.
That’s a fair assessment. It’s kind of like the rule for premature optimization: don’t.
With experience you might get some intuition about when it’s good to lean into inheritance. We were definitely lacking experience at that point though.
OOP is a pretty powerful paradigm, which means it’s also easy to provide enough rope to hang yourself with. See also just about any other meme here about OOP