Вынужден сказать вам правду. Паттерны - это не только решения типовых проблем, но и бездонный источник идей для излишнего усложнения и запутывания кодовой базы:
- как только человек выучил паттерны, ему хочется применять их везде, и в первые месяцы после умных книжек программист творит сплошной оверинженеринг: в коде появляется в разы больше абстракций, чем нужно,
- абстракции не бесплатны: всякая гибкость, динамическая диспетчеризация, pure fabrication и мелкодисперсная декомпозиция повышают количество объектов, слоев и вызовов, просаживается производительность,
- часто код становится сложным для понимания, повышается порог входа: без глубоких знаний коллеги испытывают трудности из-за того, что вы перестали решать проблемы в лоб и применяете сложные для них концепции,
- усложняются отладка и тестирование: цепочки делегирования и фабрики маскируют реальные места ошибок, теряется стек, или в нем появляются непонятные промежуточные слои, перехватчики, а если используется рефлексия, то - динамически построенные абстракции, которых в коде никто не видит.
Что делать?
Только практика и менторин могут помочь не потерять время на оверинженеринг и эксперименты. Нужны задачи по:
- переписыванию кода с удалением паттерна
- выбору простейшего паттерна для решения проблемы
- использованию встроенных в язык возможностей, решающих ту же задачу, что и паттерн
- задачи с трейдофами, когда в условии должны быть NFR или дополнительные ограничения
- рефакторинг плохо написанных паттернов, упрощение, когнитивная оптимизация
- реальные проекты, где есть ограничения во времени и нужен компромис
Все это есть на курсе в виде сквозного проекта, подробнее тут: https://nodeua.com/Patterns-2025
Post #1926
2.82K
- ❤ 9
- 💯 5
- 🔥 4
- ⚡ 2
- 👍 2
- 🤯 1