Русский
Веб-версияОткрыть в Telegram
PPatterns Onboarding

Patterns Onboarding

@patterns_javascript · канал · Технологии · в индексе с 2026-08-14
1 456подписчиков
35постов в индексе
P
Patterns Onboarding
🧩 Кроме GoF и SOLID на курсе Patterns мы разберем GRASP, эти принципы гораздо важнее, но менее известны. Information Expert - распределяйте обязанность по задачам на те абстракции, которые имеют для этого нужные данные. Связано: encapsulation, cohesion, coupling, information hiding, SOLID: SRP, SoC. Creator - Если одна абстракция пишет, читает, аггрегирует, использует, сильно зацеплена с доругой, то она и должна ее создавать и инициализировать. Связфно: Information Expert, GoF Creational patterns. Controller - содержит use-case сценарии для обработки внешних I/O запросов, от UI, API или шины собыий и делегирует выполнение другим абстракциям. Связано: GoF Command, Facade, Layers, Pure Fabrication. Low Coupling - каждая абстракция минимально зависит от деталей реализации других, содержит минимум "знаний" (обращений). Дает устойчивость, простоту тестирования и сопровождения. Связано: High Cohesion, Controller, Indirection, DIP, DI, IoC, Revealing constructor, Facade, Mediator, Observer, Strategy, State, Bridge, Adapter, Proxy. High Cohesion - все внутренние элементы абстракции тесно связаны общей целью и "знают" контракты друг друга, совместно решают одну конкретную задачу. Такие абстракции легко понимаются, тестируются и сопровождается. Связано: Low Coupling, Information Expert, Composite, Facade, Adapter. Высокая связанность внутри модуля и низкое зацепление между модулями дают устойчивость системы. Polymorphism - при помощи динамической диспетчеризации абстракции выбирают поведение и делегируют действия объектам с общим интерфейсом вместо явного ветвления по типу. Связано: GoF Strategy, Adapter, Creator, Command, State, Bridge, Template Method, Visitor, Factory Method, Proxy. Pure Fabrication - искуственные абстракции, которые не относятся к предметной области, а обслуживают структурные, архитектурные и технические нужды. Связано: SRP, ISP, GoF: Facade, Adapter, Observer, Command, Mediator, Repository, Service. Примеры: EventEmitter, Stream, Connection, Promi
2.7K ·
P
Patterns Onboarding
Вынужден сказать вам правду. Паттерны - это не только решения типовых проблем, но и бездонный источник идей для излишнего усложнения и запутывания кодовой базы: - как только человек выучил паттерны, ему хочется применять их везде, и в первые месяцы после умных книжек программист творит сплошной оверинженеринг: в коде появляется в разы больше абстракций, чем нужно, - абстракции не бесплатны: всякая гибкость, динамическая диспетчеризация, pure fabrication и мелкодисперсная декомпозиция повышают количество объектов, слоев и вызовов, просаживается производительность, - часто код становится сложным для понимания, повышается порог входа: без глубоких знаний коллеги испытывают трудности из-за того, что вы перестали решать проблемы в лоб и применяете сложные для них концепции, - усложняются отладка и тестирование: цепочки делегирования и фабрики маскируют реальные места ошибок, теряется стек, или в нем появляются непонятные промежуточные слои, перехватчики, а если используется рефлексия, то - динамически построенные абстракции, которых в коде никто не видит. Что делать? Только практика и менторин могут помочь не потерять время на оверинженеринг и эксперименты. Нужны задачи по: - переписыванию кода с удалением паттерна - выбору простейшего паттерна для решения проблемы - использованию встроенных в язык возможностей, решающих ту же задачу, что и паттерн - задачи с трейдофами, когда в условии должны быть NFR или дополнительные ограничения - рефакторинг плохо написанных паттернов, упрощение, когнитивная оптимизация - реальные проекты, где есть ограничения во времени и нужен компромис Все это есть на курсе в виде сквозного проекта, подробнее тут: https://nodeua.com/Patterns-2025
3.1K ·
Patterns Onboarding
Polymorphism classification 1. Ad-hoc polymorphism - функции или операторы ведут себя по-разному в зависимости от типов аргументов - Function and method overloading - несколько функций с одинаковыми именами и разными сигнатурами - Operator overloading - определение поведения встроенных операторов в зависимости от типа/класса - Type-class polymorphism - ad-hoc полиморфизм через ограничения типов (e.g. Haskell type classes, Rust traits) - Coercion polymorphism - задание полиморфного поведелния при неявном или явном преобразовании типов 2. Subtype polymorphism - объекты наследников могут использоваться там, где ожидаются предки - Class inheritance - переопределение поведения у наследников - Interface / protocol polymorphism - полиморфная реализация контрактов, которые должны поддерживать типы - Structural (duck typing) polymorphism - совместимость, основанная на структуре, а не на явном наследовании 3. Parametric polymorphism - код, написанный обобщенно для работы с любым типом (примеры будут добавлены ASAP) - Generic functions - функции, параметризованные по типам (без дублирования для каждого типа) - Generic data structures - структуры данных, параметризованные по типам (без дублирования для каждого типа) 4. Dispatch mechanisms - Как среда выполнения выбирает вызываемый метод - Dynamic dispatch - Метод выбирается во время выполнения на основе типа объекта - Virtual functions and methods - Методы базового класса, переопределяемые производными классами - Multiple or multimethod dispatch - Метод выбирается на основе нескольких типов аргументов Примеры кода тут: https://github.com/HowProgrammingWorks/Polymorphism Лекция с разбором будет на бесплатном курсе Patterns Mini
2.7K ·
P
Фотография
нажмите — покажем
Настал обещанный день! начинаем набор на бесплатный курс Patterns Mini Регистрируемся и получаем приглашение https://nodeua.com/Patterns-2025-free
2.8K ·
P
Patterns Onboarding
В Patterns Mini опубликовано краткое руководство (1 страница) по оптимизации JavaScript/TypeScript для V8 Регистрация 👉 https://nodeua.com/Patterns-2025-free
2.5K ·
P
Patterns Onboarding
Инсайт от Страустропа, разовью его мысль из интервью Фридману, которое советую посмотреть обязательно. Все ссылки в Patterns Mini: https://nodeua.com/Patterns-2025-free
2.6K ·
P
Patterns Onboarding
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Три завершающие лекции уже опубликованы в Patterns Mini: https://nodeua.com/Patterns-2025-free
3K ·
P
Patterns Onboarding
🧩 Через неделю мы начинаем курс Pattern 2025 Уже есть заполнение 70% мест, со среды цены поднимутся. https://nodeua.com/Patterns-2025-ua - Курс Patterns Mini уже завершился - В выходные будет воркшоп по парадигмам программирования - С понедельника начинается первая неделя 2025 года
1.8K ·
P
Patterns Onboarding
⭐️ Воркшоп по парадигмам программирования 22-23 ноября Программа воркшопа: Суббота - с 11:00 до 14:00 Объектно-ориентированное программирование и обзор парадигм, как писать одновременно понятный и эффективный код, задания с проверкой, разбор решений в прямом эфире. Воскресенье - с 11:00 до 14:30 Функциональное программирование, реактивное, асинхронное, контрактное, автоматное и другие парадигмы и обзор характеристик кода, которые они дают. Для кого: если вы практикующий программист, но ощущаете, что ваши знания не системные, с пробелами и не упорядочены, то этот воркшоп очень быстро наведет порядок в большом объеме знаний и покажет практическое применение. Будут рассмотрены понятия: инкапсуляция, наследование, полиморфизм (Ad-hoc, Subtype, Parametric, Dynamic dispatch и другие), структурная композиция, агрегация, делегирование, дженерики, закон Деметры, чистые функции, функции первого класса, мутабельности против иммутабельности, ссылочная прозрачность, функции высшего порядка, композиция функций, каррирование, частичное применение, ADT, скрытое и явное состояние, ленивые вычисления, декларативный и императивный стиль, рекурсия против циклов, обобщенное программирование, функторы, монады и мное другое. Что говорят те, кто прошли воркшоп: начали понимать как оптимальнее решать свои задачи и ощутили уверенность в своих решениях, потому, что они были приняты не случайно и не потому, что всегда так делали или это единственное, что мы знали, а с пониманием разных подходов и характеристик кода, которые они дают, сильных и слабых сторон, получаемых в результате.
1.7K ·
P
Patterns Onboarding
Тут несколько примеров из завтрашних слайдов Containers Box.of(42); Either.right(42); Promise.resolve(42); let maybe: number | null = 42; type Pair = { a?: number; b?: number }; type Option<T> = { kind: 'some'; value: T } | { kind: 'none' }; std::optional<int>; std::tuple<int>; std::reference_wrapper<int>; Nullable<int> maybe = 42; new StrongBox<int>(value); Tuple.Create(myIntValue); Guards func process(_ x: Int?) -> Int? { guard let v = x else { return nil } guard v >= 0 else { return nil } return v * 2 } in JavaScript const process = (x) => { if (x === null) return null; if (x < 0) return null; return x * 2; }; Pattern matching fn process(x: Option<i32>) -> Option<i32> { match x { None => None, Some(v) if v < 0 => None, Some(v) => Some(v * 2), } } in JavaScript const match = (variant, handlers) => handlers[variant.tag](variant); match({ tag: 'point', x: 10, y: 20 }, { point: ({ x, y }) => `(${x}, ${y})`, circle: ({ r }) => `radius: ${r}` }); Do-notation Do({ id: 15 }) .chain(({ id }) => ({ id, name: 'marcus', age: 42 })) .chain(({ name, age }) => name === 'marcus' ? (log) => log(age) : () => {}) .run()(console.log); Pipeline operator (({ id: 15 }) |> read |> (({ name, age }) => name === 'marcus' ? (log) => log(age) : () => {}) )(console.log); Declarative style execute({ read: { id: 15 }, success: { match: { name: 'marcus' }, success: { effect: { log: 'age' } }, fail: { effect: 'noop' }, }, })(reader)(console.log); 🧐 заходим, не стесняемся 👉 https://nodeua.com/Patterns-2025-paradigms
2.4K ·
P
Patterns Onboarding
Ссылка
нажмите — покажем
Курс Patterns 2025 уже начался, вот пример того, что мы разбираем на созвонах https://youtu.be/m03gMxXpIao но есть несколько мест, если вы не успели, то еще можно догнать, неделя это не критичное отставание, заходим, цены как положено на черную пятницу https://nodeua.com/Patterns-2025
2.3K ·
P
Patterns Onboarding
Мы масштабировали команду менторов и можем еще донабрать на курс Patterns. Ещё не поздно, неделю можно догнать. Кроме того, если вы не можете сейчас, но рассчитываете пойти в 2026, то заполните форму заранее. Цены завтра будут подняты, к выходным набор закрывается. Поздний онбординг на курс Patterns: https://forms.gle/r9gZCKU6RAAGo3q8A
1.8K ·
P
Patterns Onboarding
❓ Если у вас есть сомнения, как ему это поможет или другие вопросы по курсу Patterns, то можно получить консультацию от главного ментора курса Дмитрия Нечая, посьменно или созвон, заполнив форму: https://forms.gle/4h3VWbcdtvnWEotM6
1.4K ·
P
Patterns Onboarding
Многие выпускники курса кардинально изменили свою профессиональную карьеру, запустили свои проекты, нашли новую работу, стали менторами на курсе, начали контрибьютить в оупенсорс, заслужили уважение коллег, научились делать доклады и статьи, писать концептуальный код, который вдохновляет подчиненных и делает задание понятным. Воскресенье - последний шанс зарегистрироваться, потом догнать курс уже будет нереально, а следующего набора ждать примнрно 5 месяцев. https://nodeua.com/Patterns-2025
1.4K ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем