Basically the whole purpose of frameworks, modules, and OOP is to help you organize your code according to best practices:
- Low coupling (code isn’t dependent upon other code)
- Information hiding (know what, not how)
- Code Reuse (say no to the programer’s bane: ctrl-c)
- Least Privilege (related to low coupling, prevents accidents)
They break up your code into bit size chunks so you don’t have to comprehend your entire program at once while working on it. They reduce bugs, and provide a paradigm for thinking about your features. When working with multiple people, it helps provide some standardization and predictability. There is no one software architecture to rule them all, and they each have their place.
Here is some good reading on the topic:
Note that most OO and functional languages can implement an ECS framework, although I’d think ECS is cleaner (arbitrary, I know) in functional languages.