Asynchronous Programming
2.14K subscribers
35 photos
1 file
99 links
Download Telegram
Почему нужно избегать union-тайпов?

1. Каждый раз, когда юнион куда-то приходит аргументом, нужно делать if, чтобы понимать, как с ним работать, кроме случая, когда все классы/типы, входящие в юнион имплементируют один и тот же интерфейс и нас интересует обращение именно через этот интерфейс, зачем тогда юнион, используйте этот интерфейс вместо него, ну если в юнион не входит undefined, null, unknown и т.д.

2. Юнионы приводят к мегаморфной форме обращения к объектам в V8, и это замедляет код, не сметртельно, но это неприятно и проще всего всего забыть их. Но для чего же они тогда вообще нужны? Для совместимости с JS, если в нем можно передать что-угодно аргуметом, то это нужно меть возможность как-то выразить. Это не значит, что это хорошо и так нужно писать кода, это добавили как возможность, а не как обязанность )

3. Это часто ведет к нарушению SOLID:SRP (принципа единственной отвественности), потому, что как может метод, например, получать сокеты или таймеры на выбор и делать разные вещи в зависимости от этого, это же маразм, нарушает SOLID:LSP (принцип подстановки), иногда нарушает GRASP:InformationExpert, явно повышает Coupling.

Вместо этого нужно всегда использовать маленькие интерфейсы, заточенные под узкую задачу, помним про SOLID:ISP (принцип разделения интерфейсов) и могут быть optional аргументы, для этого не нужно делать union с null.
👍84🔥2🤯2
План стримов по паттернам:
08 августа - четверг - ITBeard
09 августа - пятница - Деми Мурыч
10 августа - суббота - Илья Климов
25🎉7🔥6👍2
В субботу будет мастер-класс «Middle to Senior in 2024» в 15.00 (GMT+3) 👉 https://t.me/JavaScriptPatternsBot?start=TIMUR
👍248🔥3
⭐️ Менеджмент — это лженаука об управлении. А наука об управлении называется кибернетика.

⭐️ Парадигмы программирования, кроме процедурной — это пока еще так... игрушечки и эксперименты.  Весь существенный софт написан процедурно.

⭐️ Если вы приличный человек, у вас успешный продукт, большая команда и кодовая база — то вам очень стыдно за код проекта.

⭐️ Секта антисектантов «осознанность»

⭐️ Появилось предположение, что Jira и прочий треш-софт придумали для того, чтобы оправдать найм непрограммистов и заполнить их рабочее время хоть чем-то работоподобным, кроме бесконечных созвонов.

⭐️ Чем заменить конфлюенс? Он прекрасно заменяется отсутствием конфлюенса.

⭐️ No-code advantages: no bugs, no problems, no tests needed, no git diff, no code review and fixes needed, perfect just after first release, no-code is compatible with serverless.

⭐️ Cloud naïve: PaaS — promise as a service

⭐️ Приходит Цекербрин к своим разработчикам и спрашивает: ну шо, когда уже наш фейсбук будет дописан окончательно?

⭐️ Любая достаточно развитая технология неотличима от Метархии.
🤣34👍149💩1
Кто еще не смотрел стрим про связь профессионального роста и паттернов, то готовьтесь, там больше 7 часов, и главное — все по делу, про то, как и чему учиться и про важность культуры, которая проникает через паттерны https://www.youtube.com/watch?v=QzxklJW4_LM
👍11🔥65🤯2
Открыта предварительная регистрация на курс Patterns 2024 — я уже изучил всю доступную литературу и конкурентов и теперь уверен — аналогов нет, ни кто так и не смог сделать приличной адаптации паттернов к JavaScript, TypeScript, Async, Node.js миру — https://nodeua.com/Patterns-2024-buy.html
👍12🔥32
1 сентября: понятный и красивый код может появляться только из стремления использовать его для образовательных целей. Если Вы видите понятный и красивый код, то будьте уверены, что или сам программист или его учитель выработали этот стиль для того, чтобы пояснить свою мысль. Ни стремление к производительности, ни бизнес-задачи, ни большой опыт не создают таких условий. Они могут порождать очень крутой код, сложный и даже надежный, но он в нем не будет человеко-ориентированности и эстетики.
20👍7🤯3🎉1
✔️ Как в JavaScript/TypeScript реализуется SoC (separation of concerns) и для чего он нам?

Вы наверняка видели код, в котором на событиях или на роутах висит обработчик, который содержит и часть бизнес-логики и обращение к базе и работу с сетью. Такой портянка-код характерен для чат-ботов и серверов. Как это можно написать иначе и как в этом помогают паттерны?

Нам нужно отделить три составляющих кода (грубо говоря, совсем упрощая): транспорт, бизнес-логику, базу. Но обеспечить между ними зацепление, минимальное необходимое. Лучше всего разнести их в три разные модуля (на это не обязательно), можно разнести в три разные программные компонента или в три разные абстракции. Одна обеспечивает работу с базой и ничего не знает о транспорте, а вторая - работу с транспортом и ничего не знает о базе. Дальше их должна сшивать общая абстракция (по принципу композиции, можно и агрегации). Какие паттерны тут помогут?

🧩 Mediator - снижает зацепление и подойдет нам для изоляции базы от транспорта.
🧩 Strategy - реализация стратегии для JavaScript это Map<PropertyKey, Implementation> что позволяет абстрагироваться от Implementation, находя его по ключу и работая по обобщенному интерфейсу.
🧩 Bridge - позволяет разделять абстракции и снижать зацепление, но не характерен для JavaScriot.
🧩 Abstract factory - для JavaScript абстрактная фабрика сводится к стратегии инстанциирования: Map<PropertyKey, Creator> и применяется как и стратегия, но в том месте, где нам нужно создавать инстансы (тут Creator это любой порождающий паттерн).

Признаки проблемы:
• Если вы не можете модифицировать работу с базой не трогая транспорт или бизнес-логику, не задевая базу, то нужно начинать внедрять разделение ответственности (separation of concerns).
• Если сложно написать юниттесты, а что-то протестировать можно только все целиком - ну вот оно, вы нашли проблему.
• Если код невозможно переиспользовать и вы чувствуете, что одно и то же пишете уже много раз.

Примеры на курсе по паттернам 👉 https://nodeua.com/Patterns-2024-buy.html
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🔥3🤯2
🚀 Структура программы менторинга Patterns 2024 постепенно вырисовывается

🧩 Unit 1: Structure and Modularity
Week 1: Code Characteristics and Optimization Strategies
Week 2: Native features in language and platforms
Week 3: Instantiation: Creational Patterns and Techniques
Week 4: Isolation: Separation of Concerns
🧩 Unit 2: Execution and Contracts
Week 5: Contracts: Interfaces for Component Interaction
Week 6: Decoupling with Events and Messaging
Week 7: Streams: Data Flows and Transformations
Week 8: Handling Errors: Exceptions and Soft Failures
🧩 Unit 3: Runtime for Applications
Week 9: Semantics: Expressive DSLs
Week 10: All-agnostic as a Default Strategy
Week 11: Scaling Applications and Architectural Styles
Week 12: Methodology: How to Start Applying Concepts

Начало 1 октября, уже а наставников кол-во ограниченное, я не успею подготовить новых до начала, так что резервируете.
На днях обновим сайт и разложим темы по неделям https://nodeua.com/Patterns-2024-buy.html
7🔥2👍1
🤣225👍3🤯2
🎓 IT образование: для себя определил, что неприемлемо брать деньги с начинающих, с людей, которые еще не знают что им нужно, которые вообще слабо ориентируются в отрасли. Обратите внимание, большинство трешевых ИТ-школ и "инфобизнесменов" специализируются именно на начинающих, им же можно рассказывать про циклы месяц, про переменные разжевывать и про операторы еще месяц, массивы учить и уже через полгода написать какой-то несчастный тудулист или чатбот, в виде простыни кода, и они рады, у них есть результаты, ну вот реально что-то получилось. А попробуйте продать что-то мидлам и синьорам, у них уже сформировалось мировоззрение, есть свое видение, им доказать ценность вашего курса на порядки сложнее. А потом они будут требовательными в процессе обучения, окажется, что нужно быть специалистом высокого уровня, тратить много времени, чтобы удовлетворить их, ответить на вопросы, не засыпаться от реальных продуктовых примеров кода, которые они приносят на занятия для разбора. А начинающих, ну я готов допустить, что можно брать с них деньги за наставничество, за проверку работ, за ревью кода, но не за учебный материал, которого и так море в интернете. Но такое наставничество, это удел джунов, которые еще год назад сами были такими же, и не может быть бизнесом, оно так же полезно этим наставникам для их роста, как и для начинающих. По-хорошому, вообще непонятно, кто кому платить должен. В идеале, сам процесс должен выходить в ноль по затратам сил и пользе с обоих сторон и может идти как взаимозачет. Посмотрите на всех приличных людей, которых вы знаете в ИТ-образовании, они концентрируются на обучении людей, которые уже работают и могут заработать на свое образование. Ни в коем случае не учите начинающих, которые берут кредиты на обучение, которые одалживаются или тратят последние деньги на то, ценность чего еще сами не понимают. Они еще 100 раз передумают, бросят, опять начнут, переметнутся на другой язык, поймут, что душа лежит к какой-то третьей экосистеме, и главное, что первые полгода они не могут определить качество обучения. И вот тут из кустов появляются создатели "образовательного контента", высокохудожественные читатели документации и прочие мошенники. Люди, учите друг-друга, не давайте этой нечисти парить голову начинающим, помогите им проложить роадмап в профессии, материала море, до первой работы можно вполне на нулевом бюджете доучиться, вкладывая только время и силу воли.
Please open Telegram to view this post
VIEW IN TELEGRAM
36👍12
10🤣7🔥4💩2
Вот вы говорите, алгоритмы, алгоритмы, а тут открываешь ноду и видишь такое: https://github.com/nodejs/node/blob/7014e50ca32d39b94d04e04a5e6498e5c2f4346f/lib/path.js#L249-L274
👍9🤯6🤣4
🧩 Тарифные планы тренинга с наставниками Patterns 2024

∙ Minimal: обучение в общей группе без наставника, но с групповыми семинарами
∙ Standard: обучение с наставником в небольших группах (10 человек)
∙ Professional: обучение с наставником, индивидуально и в группах, дополнительные материалы
∙ Exclusive: персонализированный учебный трек с автором курса и приглашенными экспертами

👉 Подробности: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Patterns-2024-ru.md

Формат тренинга

🗓 12 недель (3 месяца) + онбординг (1 неделя) + секретный модуль
👍 Доступ к материалам курса дается навсегда
🕑 Каждую неделю обязательно: 1 час лекций + 2 часа семинаров + 2 часа самостоятельной работы
🥋 Тренировки и групповая работа с наставниками, а не только смотрение видосов и чтение
🙋‍♂️ По желанию: для глубокого погружения +3 часа дополнительных материалов на старших тарифах
🏅 По завершению курса Вы получаете сертификат
⚠️ Входные требования: базовый JavaScript + рекомендуется опыт практического программирования
🙅 Для кого не подойдет: не для начинающих, бесплатные материалы для начинающих ищите у Тимура
💳 Рассрочка: помесячная оплата для всех тарифов кроме минимального
🗺 После курса участие в комьюнити выпускников, где уже тысячи людей по всему миру

👉 Купить: https://nodeua.com/Patterns-2024-buy.html
👍4🔥41