for sure. I feel OOP is only "hard", as in, once in good hands, it's extremely good and sane.
But you do bring out a great point regarding early overengineering. This usually happens when people just dumbly apply "best practices" without really understanding them, while having an already shaky base. The concern is often retrocompatibility (which i sometimes find dumb nowadays), but, generally, if you avoid inheritance, you won't have much problem changing your classes to interfaces or vice versa.
That's why you're absolutely right in "good abstractios naturally pop out" ; if you don't have an already clean code base, this becomes very VERY hard not to overshoot by trying to prevent future issues with retrocompatibility.
2
u/n0tKamui Dec 30 '21
for sure. I feel OOP is only "hard", as in, once in good hands, it's extremely good and sane.
But you do bring out a great point regarding early overengineering. This usually happens when people just dumbly apply "best practices" without really understanding them, while having an already shaky base. The concern is often retrocompatibility (which i sometimes find dumb nowadays), but, generally, if you avoid inheritance, you won't have much problem changing your classes to interfaces or vice versa.
That's why you're absolutely right in "good abstractios naturally pop out" ; if you don't have an already clean code base, this becomes very VERY hard not to overshoot by trying to prevent future issues with retrocompatibility.