Подскажите пожалуйста, какие вообще бывают способы для борьбы со сложностью разрабатываемой системы?
- ООП?
- Шаблоны проектирования?
- Декларативный подход?
- Когда стоит применять конечные автоматы?
- Когда стоит применять метапрограммирование?
- Когда стоит применят композицию?
- и т.д.
Я просто запутался если честно, в программировании есть столько интересных методов, но я не нашёл пока книги, где бы мне рассказали, какой метод лучше выбрать и как построить простую архитектуру программы, чтобы потом она меня не сожрала свой сложностью.