HowProgrammingWorks - JavaScript and Node.js Programming
6.32K subscribers
333 photos
8 videos
1 file
816 links
Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/MetarhiaHPW 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua
Download Telegram
Вынужден сказать вам правду. Паттерны - это не только решения типовых проблем, но и бездонный источник идей для излишнего усложнения и запутывания кодовой базы:
- как только человек выучил паттерны, ему хочется применять их везде, и в первые месяцы после умных книжек программист творит сплошной оверинженеринг: в коде появляется в разы больше абстракций, чем нужно,
- абстракции не бесплатны: всякая гибкость, динамическая диспетчеризация, pure fabrication и мелкодисперсная декомпозиция повышают количество объектов, слоев и вызовов, просаживается производительность,
- часто код становится сложным для понимания, повышается порог входа: без глубоких знаний коллеги испытывают трудности из-за того, что вы перестали решать проблемы в лоб и применяете сложные для них концепции,
- усложняются отладка и тестирование: цепочки делегирования и фабрики маскируют реальные места ошибок, теряется стек, или в нем появляются непонятные промежуточные слои, перехватчики, а если используется рефлексия, то - динамически построенные абстракции, которых в коде никто не видит.

Что делать?

Только практика и менторин могут помочь не потерять время на оверинженеринг и эксперименты. Нужны задачи по:
- переписыванию кода с удалением паттерна
- выбору простейшего паттерна для решения проблемы
- использованию встроенных в язык возможностей, решающих ту же задачу, что и паттерн
- задачи с трейдофами, когда в условии должны быть NFR или дополнительные ограничения
- рефакторинг плохо написанных паттернов, упрощение, когнитивная оптимизация
- реальные проекты, где есть ограничения во времени и нужен компромис

Все это есть на курсе в виде сквозного проекта, подробнее тут: https://nodeua.com/Patterns-2025
9💯5🔥42👍2🤯1
Нам не нужен паттерн Adapter, поскольку EventEmitter уже передает нужные события во все места напрямую.

Нам не нужен паттерн Facade, поскольку наша абстракция уже, к счастью, блокирует весь реальный поток, считайте, нам повезло.

Нам не нужен Data Access Layer, поскольку ORM делает запросы, а мы еле успеваем не затопить соседей.

Нам не нужна какая-то дополнительная архитектура, потому что каждый микросервис уже имеет свой личный люк к истине.

Нам не нужен курс по паттернам, все мемы уже собраны здесь: https://t.me/+I-suNalcHC03NGUy
🤣212👍1
💡 Ссылки на наши ресурсы

Открытые группы и каналы

- Україномовний канал спільноти https://t.me/metarhia
- Україномовна група https://t.me/nodeua

- Канал с общими вопросами https://t.me/HowProgrammingWorks
- Группа с общими вопросами https://t.me/MetarhiaHPW

- Канал для CTO и архитекторов https://t.me/MetarhiaChiefs
- Группа для техстека Metarhia: https://t.me/metaserverless

- Канал для начинающих https://t.me/metaedu
- Группа для начинающих https://t.me/+znsE73dPWLQ5Nzky

- Группа сообщества по асинхронному программированию https://t.me/asyncify
- Онбординг для желающих пойти на курс Patterns: https://t.me/patterns_javascript

Закрытые ресурсы

- Группа сообщества - доступна всем курсам - https://www.patreon.com/cw/tshemsedinov/membership
- Еженедельный созвон по четвергам - доступен всем курсам - https://www.patreon.com/cw/tshemsedinov/membership
- Курс по ноде и асинхронному программированию - https://www.patreon.com/cw/tshemsedinov/membership
- Курс по паттернам - https://nodeua.com/Patterns-2025
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥2👍1
👀 Классификация типов полиморфизма (дополняется)

1. Ad-hoc polymorphism
- Function and method overloading
- Operator overloading
- Type-class polymorphism (e.g. Haskell type classes, Rust traits)
- Coercion polymorphism
2. Subtype polymorphism
- Class inheritance
- Interface / protocol polymorphism
- Structural (duck typing) polymorphism
3. Parametric polymorphism
- Generic functions
- Generic data structures
4. Dispatch mechanisms
- Dynamic dispatch
- Virtual functions and methods
- Multiple or multimethod dispatch

👉 Примеры и пояснения тут: https://t.me/patterns_javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥1
Началась регистрация на бесплатный курс Patterns Mini 👉 https://nodeua.com/Patterns-2025-free
🎉8👍5🤩43