Every time someone says this I ask them “what is your solution for maintainable software architecture?” And they say “what is software architecture? I just write code”
Every time someone says this I ask them “what is your solution for maintainable software architecture?” And they say “what is software architecture? I just write code”
I’ll bite: use objects sparingly, and mainly to namespace functions that operate on data. Use inheritance even more sparingly, because it’s a nightmare to work with a poorly conceived inheritance hierarchy, and they’re so easy to get wrong. Pure interfaces are an exception, in languages where you need them. Write mostly functions that transform data. Push IO to the edge where it’s easy to swap out.
Most importantly, never ever abstract over I/O. Those are the ones that leak out and cause havic.
Yeah Go and Rust made the right choice of not supporting inheritance at all.
Non-OOP is pretty mainstream practice already, and it's maintainable. They even redid React. Java conceded a bit with newer features like lambdas.