Паттерны в JavaScript с ПРИМЕРАМИ / Культура кода и как готовить TDD / Тимур Шемсединов

  Рет қаралды 20,290

ITBeard

ITBeard

Күн бұрын

Пікірлер: 79
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
А вот теперь можно задавать вопросы и по теме и любые. Если Вы задавали во время стрима, то поищите тут в реплаях под этим сообщением, я многие скопировал и ответил.
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
Отвечаю на вопросы из чата:
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
​​Вопрос по typescript: Не знает ли Тимур, почему в typescript так долго декораторы являются эксперементальными и почему до сих пор нельзя с помощью декоратора добавить метод классу. Ответ: потому, что у JavaScript свой пропоузал-стандарт по декораторам и они не совместимы, для того, чтобы в TS декораторы стали не экспериментальными, их нужно привести к совместимости с JS, иначе, когда в JS их выведут из экспериментального статуса, весь TS сломается. Это может быть не быстро, тут нужна сложная работа по интероперабилити, чтобы весь уже существующий код было просто перевести на новый стандарт
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
Вопрос: "если JS ООП паттерны выглядян ненативными, может тогда и не стоит пытаться их внедрять в JS? Ну типа если у вас своя субкультура то может и шаблоны должны быть свои?" Ответ: они нужны, но теперь нам нужно поддерживать и свои и общие для поддержки понимания с другими языками, путь не простой, но другого нет, нужно знать два-три названия и несколько реализаций. Но разует, что не все паттерны нужны в каждом проекте, есть 5-7 основных, которых хватит для 99% всего кода, а вот с принципами GRASP и SOLID проще, они все актуальны, но их понимание уже далеко ушло вперед от того, что описано в книжках, за то оно проще адаптируется, принципы универсальные, менее конкретные и их проще переосмысливать
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
Вопрос "Next замещает Express? или сколько еще можно жить на последнем" Ответ: Не Next, а Nest и не замещает, а пробует, но мой вам совет - берите Fastify или пишите на чистой ноде. А жить последний будет долго, потому, что легаси на нем вагоны, вот Fastify мимикрирует под него, чтобы подхватить и облегчить переход, оставить старый интерфейс фреймворка, но перейти на новые кишки
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
Вопрос: "​​Будет поддержка web3 в Metarhia? 🌝" Ответ: Мне лично это не нужно, но это уопен-сорс, можете реализовать и принести убедить контрибьюторов принять
@olly_smith
@olly_smith 3 ай бұрын
Здесь у меня особо поумничать не получится, поэтому просто поставлю лайк ;). ❤.
@xxxxPomaHxxxx
@xxxxPomaHxxxx 2 ай бұрын
00:00:00 Ждем 00:04:55 Обсуждение разработки и программирования 00:10:30 Развитие технологий и стека 00:14:16 Обучение и курсы 00:18:44 Обсуждение паттернов и принципов 00:24:55 Развитие в программировании 00:30:50 Паттерны и их использование 00:35:37 Паттерны в JavaScript 00:37:45 Паттерны в Node.js 00:39:52 Паттерны и их использование 00:42:43 Кросс-языковая терминология 00:47:00 Использование паттернов в реальных проектах 00:50:17 Пример использования паттернов 00:52:23 Задача с паттернами 00:55:59 Решение задачи 00:57:14 Адаптеры и контракты 00:59:16 Паттерны и абстракции 01:05:25 Реактивное программирование и сигналы 01:10:54 Функциональное программирование и взаимозаменяемость паттернов 01:13:48 Принципы подстановки и абстракции 01:18:57 Паттерны и их применение 01:22:53 Сложность и оптимизация 01:26:38 Паттерны и их использование 01:33:08 Оптимизация и безопасность кода 01:36:56 Применение паттернов в хайлоуах 01:40:07 Обсуждение программирования и обучения 01:51:19 Паттерны и подходы к программированию 01:58:12 Важность культуры программирования 01:59:56 Знание и понимание синхронного программирования 02:01:49 Оптимизация и знания о работе кода 02:05:07 Архитектурные стили и паттерны 02:08:01 Алгоритмы и собеседования 02:15:58 Университеты и выпускники 02:21:00 Теория и практика программирования 02:23:08 Обсуждение тестирования и разработки 02:30:20 Тестирование и разработка в опен-сорс проектах 02:36:51 Использование нейронных сетей в программировании 02:43:14 Будущее нейронных сетей в программировании 02:49:34 Обсуждение использования нейронных сетей в программировании 02:52:04 Подходы к программированию 02:57:16 Начало изучения программирования 03:00:42 Отделение бизнес-логики от фреймворка 03:05:30 Агностик-подходы и Рэмки 03:12:36 С-код и бизнес-логика 03:14:36 Разрушение чистой архитектуры 03:20:31 Паттерны и их использование
@3ple-ash
@3ple-ash 3 ай бұрын
Спасибо за шикарного гостя. Тот случай когда жалею, что не попал в универ только из-за невероятного преподавателя и человека)
@heathro_1
@heathro_1 3 ай бұрын
Спасибо за стрим вам обоим. Оба клёвые!
@itbeard
@itbeard 3 ай бұрын
Спасибо!
@IT_psychopath
@IT_psychopath 3 ай бұрын
по курсам, они ТОП, покупал, знаю. но к сожалению не пишу по итогу на node.js хотя знаю ее. так к сожалению сложилось что начал учить, осваивать ноду а меня по итогу так распылили что вообще решил бросить js как таковой и компанию тоже где работал..🤣 и смешно, и печально.. а так курс крутой, Тимур вообще святой какой-то очень отзывчивый, человек понимающий, приятный.
@ralymbetov
@ralymbetov 2 ай бұрын
какой язык выбрал в итоге?
@artem_travlo
@artem_travlo 22 күн бұрын
Спасибо. Огонь !
@chesscoder
@chesscoder 2 ай бұрын
Очень хороший стрим, держите планку!
@HeliodoroSampaio
@HeliodoroSampaio 2 ай бұрын
А как вы относитесь к TDD в реальных проектах? Лично я долго выбирал курсы по IT, рассматривал разные варианты, но в итоге остановился на Skypro. После завершения курса получил оффер и теперь работаю удаленно))
@selub1058
@selub1058 3 ай бұрын
Ответ на вопрос 3:02:40 Какая выгода от переключени с одного фрейворка на другой. NestJS по дефолту под капотом использует Express. Парой строчек в коде легко переключается на Fastify. Производительность Express = 11000 req/sec, Fastify = 65000 req/sec. Вот так вот легко увеличивается производительность сервера. Другое дело что многим проектам и производительности Express за глаза хватает.
@itbeard
@itbeard 3 ай бұрын
Так почему сразу на базе фастифая не писать решён?
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
@@itbeard Я тоже предлагаю сразу на Fastify без Nestjs писать, но есть же еще пиар у каждого фреймворка, Nestjs очень распиарили, а Express был одним из первых и практически 10 лет безальтернативным, он очень распространился, и сейчас часто запускают Nestjs на базе Express, а потом переезжают на Fastify, это просто массовая практика )))
@ivanarsenev4474
@ivanarsenev4474 3 ай бұрын
@@selub1058 hono вообще умеет под любой рантайм. Node, Bun или cloudflare workers . Это куда интереснее в плане перфоманса
@selub1058
@selub1058 3 ай бұрын
@@itbeard Хороший вопрос. Я на него отвечаю так. Если используется NestJS и производительности хватает, то никто не заморачивается что там под капотом. Хотя это важно. Под капотом там Express. Если выбор между более низкоуровневыми серверами Express vs Fastify, то выбирают тот на который проще найти опытных разрабов - Express. Да Fastify более модерновый, 100% энтерпрайз решение, более быстрый, более удобный, с готовой типизацией TS. Но при выборе сервера для проекта многим хватает производительности экспресса и нет смысла использовать более продвинутый фастифай.
@Богдан-р4ы1э
@Богдан-р4ы1э 2 ай бұрын
@@selub1058 NestJS может под капотом и fastify использовать. Хотя было б намного лучше если б NestJS использовал свое ядро без привязок к фреймовркам.
@microspacer
@microspacer 2 ай бұрын
Спасибо за упоминание теоретической информатики. Отсутствие оной в ВУЗе это реально так, к сожалению
@mrstronciy1060
@mrstronciy1060 2 ай бұрын
Лайк не глядя 🎉 Но и посмотрю обязательно ❤
@alexanderzelenkov6944
@alexanderzelenkov6944 2 ай бұрын
Про TDD мысль интересная, сам заметил что я и команда пришли к такому подходу. P.S. Кстати, на фронте приходится писать деревья (и не то чтобы я сильно их любил и хотел).
@oeaoo
@oeaoo 3 ай бұрын
Паттерны давно нужно обновлять и переосмыслять. Эти индусстриальные и строительные метафоры уже какая-то старая хрень, если честно. Тимуру пожелал бы создать свою "колоду таро" паттернов современной разработки
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
Я ператрахивал патерны и буду их ператрахивать
@wavel6887
@wavel6887 2 ай бұрын
Це було дуже цікаво. Дякую❤
@chellscript
@chellscript 2 ай бұрын
Ухх как я хорошо поспал! Так, надо включить сначала
@gorsing
@gorsing 2 ай бұрын
Спасибо ВАМ, смотрю ВАС.
@viacheslav5574
@viacheslav5574 2 ай бұрын
На той же странице где рассказывается про DRY и reusability, большими красныим буквами должно расскзаываться про premature abstraction, про coupling между консьюмерами этой абстрации. Про indirection, про то какой когнитивный эфект это все имеет. Что reusability снижает экспрессивность, декларативность кода. И дальше вопрос - а может ну его нахуй и от того что написать одно и то же в разных местах мир не рухнет. Особенно в Node.js со всеми ништяками композиции, краткость и экспрессивность которые он предоставляет. Что можно отложить абстрацию на потом, когда она уже совсем будет проситься и когда заебет код копировать. Говоря о себе - это был один из самых серьезных блайнд спотов который мне мешал, присутствие и вред от которого потребовались годы что бы осознать
@tototomay
@tototomay 2 ай бұрын
Дудь от мира it😂 Оставайтесь на ютубе ребят, и в этом информационном поле со своим кружком по интересам)
@0xO2
@0xO2 2 ай бұрын
1:19:30 в этом месте бомбануло. Что такое рефакторинг, а что такое код от сеньера по всем правилам. Не противоречит ли второе с готовностью к первому?
@fessovskylaeda8760
@fessovskylaeda8760 2 ай бұрын
Кратко - нет, не противоречит. Длинно, проекты штука живая, все может измениться от потребности в иной реализации, до изменения самих требований. "Чистый код" проще понять и проще изменять и проще тестировать. Иногда задача ставится, ресурсы выделяются и начинается работа. После выполнения, через какое-то(порой долгое) время требования меняются и выделяются доп ресурсы с новыми метриками полученными в ходе эксплуатации, оказывается, что нужно где-то добавить дополнительную бизнес логику или оптимизировать код, может изменить механизм кэширования/соединение с бд/логику нотификаций и т.д. в итоге помидор не обязан писать код, который в DI может, соответствует основным принципам, легко покрывается тестами, расширяется и меняется, но делает это, потому что ленив по своей природе и имеет болезненный опыт и полезные знания. Моя мысль такая: рефакторинг - это часть производственного процесса, готовность кода к нему это не ошибка новичка, а привилегия девелоперов с опытом. Если не трудно и есть минутка-другая, напиши подробно, в чем именно ты видишь противоречие? Может быть я в "не туда" респонз закинул;)
@dennisk648
@dennisk648 2 ай бұрын
Javascript кодерок должен попробовать IOS и Android фреймворки, что бы иметь представление о шаблонах для UI.
@TimurShemsedinov
@TimurShemsedinov 2 ай бұрын
Не знаю, как мобильная разработка, но вот почему в CBuilder, Delphi, WinForms, .Net, Java, C++ Qt не было особых проблем с UI? Все уже давно классно спроектировано и подходы везде уже устоялись, ну портируйте вы нормальное решение и адаптируйте, зачем все эти танцы с фреймворками...
@dennisk648
@dennisk648 2 ай бұрын
@@TimurShemsedinov Абсолютно согласен. В React был нормальный подход с IoC через переопределение методов класса UI компонента. В вкратце эти методы отражали жизненный цикл компонента. Сейчас они придумали «хуки» которые намерянно не используют абстракцию жизненнного цикла компонента, и являются больным и извращенным пониманием IoC
@0xO2
@0xO2 2 ай бұрын
... но всё равно больше всего сделано и делается с jQuery :-)
@dima__rx5fw3rm1n
@dima__rx5fw3rm1n 3 ай бұрын
Kiss - это keep it smart simple. Как вариант. Так как эти "паттерны ваши намудрены в общем". Но как Тимур и говорил, есть некоторая "обязательная" сложность. Никак не обойтись без коннекта и запроса к бд, если вы решаете задачу запррса к бд 🤷‍♂️ Но педалить свой орм-фреймворк слишком не по-kiss-овски)
@dima__rx5fw3rm1n
@dima__rx5fw3rm1n 3 ай бұрын
В задаче запроса мы не рассматриваем кэш или in-memory данные. Суть именно в принципиальных шагах (но они индивидуальны)
@itbeard
@itbeard 3 ай бұрын
Всё же keep it simple stupid в оригинале 😊
@dennisk648
@dennisk648 2 ай бұрын
ORM фрейморк это абстракция над например sql. Если абстракция тебе не подходит, ты ее не используешь. У тебя допустим нет необходимости запускать orm против oracle и postgre, ты можешь выбрать orm который не прячет детали oracle и не перегружаешь свое приложение концепциями далекими от допустим анонимных plsql блоков для оракла. Нанимайте библиотеки для решения ваших задач а не нойте что вас обманули насчет «простоты»
@pavlomiklashevych1758
@pavlomiklashevych1758 2 ай бұрын
@@itbeard кто-то еще называет short and simple. На цвет и вкус.. как говорится. Главное чтоб использовали правильно!
@oleksandrivashchenko7916
@oleksandrivashchenko7916 2 ай бұрын
Лайк, підтримка, коментар
@АнимусАнанимус
@АнимусАнанимус 2 ай бұрын
Кто все эти люди, кто из ФП уходит? Не встречал таких.
@maxkovalchuk1396
@maxkovalchuk1396 27 күн бұрын
топчік топчік топчік
@vladimirjosan6127
@vladimirjosan6127 2 ай бұрын
Молдавского языка не было и нет. Он всегда был румынским.
@ioankatsapovich
@ioankatsapovich 2 ай бұрын
@@vladimirjosan6127 наоборот, румынский возник на основе молдавского
@JS_korben
@JS_korben 2 ай бұрын
А чо с комментами то?) куда деваются?))
@Каролина-н2р
@Каролина-н2р 2 ай бұрын
Асимптоматический - беспричинный ( перевод на русский)
@dennisk648
@dennisk648 2 ай бұрын
Давайте признаем что в среде web frontend культура программирования деградировала за последние 10 лет. В тот момент когда мы разделили фронт-бэк-база специализации, чуваки оказались в вакууме. Я когда пересматриваю ui фреймворки, особенно связанные с react, у меня возникает устойчивое чувство, что это какая то дурка или ситуация когда детей оставили одних и они уеб-али квартиру и нужен дорогой ремонт после этого.
@TimurShemsedinov
@TimurShemsedinov 2 ай бұрын
💯% я во фронте фреймворков не знаю, но dom и web api неплохо ориентируюсь, Я вот не верю, что все должно быть настолько через ж
@yoloopen
@yoloopen 2 ай бұрын
10 лет назад фронтенд культура сводилась к лапшекоду на jQuery. Сейчас же простейшую страничку без фреймворка и набора библиотек никто делать не станет, стало сложнее, мудренее, переиспользуемее, куча инструментов на любую задачу, разные проверенные подходы на выбор, это и есть культура. UI фреймворки год от года улучшаются, что там 10 лет назад было: допотопные bootstrap и foundation?
@dennisk648
@dennisk648 2 ай бұрын
@@yoloopenбыли Adobe Flex, Ext.js, Microsoft Silverlight. Куча народа кинулись в «html5» и разбросали полимеры на ходу. Если сравнивать документации старого ангуляра с современным реактом, мне кажет что последнее не пишут для инженеров а для формо шлепов. Вот я недавно открыл api reference для реактовских хуков и там нислова о жизненном цикле компонентов, даже названия используют максимально ужаленные от архитектуры. Примерно такая же дичь проиходит с другими около реактовскими либами. Абстракции максимально далеки от общепринятых шаблонов
@ivanarsenev4474
@ivanarsenev4474 2 ай бұрын
Так последние два года как раз обратно все вернулось в next.js и бек и фронт все в одной куче
@selub1058
@selub1058 2 ай бұрын
Что было, то и будет; и что делалось, то и будет делаться, и нет ничего нового под солнцем. Бывает нечто, о чем говорят: "смотри, вот это новое"; но это было уже в веках, бывших прежде нас. Нет памяти о прежнем; да и о том, что будет, не останется памяти у тех, которые будут после.
@ioankatsapovich
@ioankatsapovich 2 ай бұрын
Смотрю потому что Минина ниже плинтуса попустил. Респект 😅
@JS_korben
@JS_korben 2 ай бұрын
Только угодные комменты добавляете?))
@ioankatsapovich
@ioankatsapovich 2 ай бұрын
@@JS_korben логичные
@IT_psychopath
@IT_psychopath 3 ай бұрын
по потернам это да.. тоже часто афигеваю когда какой сеньор рассказывает про солид там где писать надо на функциональщине.. ты сидишь такой и хочется сказать - "ты идиот?"..🤣 я порниммаю что они зазубрили и везде видят принципы солида, но они применимы не везде и это просто треш когда человек говорит про ООП принципы там где нет ООП.. это как люди послек С++, java приходят в python и начинают писать код как писал там.. а потом они же орут что python медленный или еще какой.. конечно если фигачить через сроку антипаттерны он будет медленным.. если кто не теме, в python строго настрого нельзя писать код как в Си подобных! никоглда те не делайте! он ABC подобный и там как в том фильме - "что для java хорошо, для python смерть..".🤣 как и алгоритмы, когда их зазубрили а про память, структуры данных, особенности языка забыли..🤣
@Alexchtch
@Alexchtch 3 ай бұрын
Интересный поинт по поводу солида. Но как по мне, большинство принципов его в разрезе JS подходят ко всему. Даже когда не используется ООП. У меня нет опыта работы с haskel, ocaml или scala. Но мне кажется, многие вещи применимы и там.
@oeaoo
@oeaoo 3 ай бұрын
есть такое, считаю зубрежку хуже незнания, так как человек реально тупеет и начинает использовать их не в тему
@dennisk648
@dennisk648 2 ай бұрын
Интересно видеть броски гуано в сторону OOП когда даже в Javascript добавили классы а основным языком вдруг стал Typescript. Жависты просто застали эру когда народ сформулировал шаблоны программирования и выпускал книжки на эту тему ( language agnostic) и им посчастливилось увидеть их в стандартной библиотеке жавы (JDK). В Javascript мире ничего подобного не происходило. Хотя сам фронт был одно время сильно прокачан Adobe Flex, MS Silverlight, Java applets. Последний рантаймы прикончили, хотя могли бы сделать стандартами. Я могу заявить что уровень фронта упал и превратился в дурку, где вместо того что бы обсуждать идеи, кодерки меряются тем какая либа имеет больше скачиваний в NPM. Разве не так?
@JS_korben
@JS_korben 2 ай бұрын
А чо с комментами то?)
@Каролина-н2р
@Каролина-н2р 2 ай бұрын
Какая чушь несусветная!
@sergeiaivazian5773
@sergeiaivazian5773 2 ай бұрын
Не зашло. Такое ощущение, что один не понимает вопросов, а второй не понимает ответов. С виду кажется, что Тимур очень оторван от коммерческой разработки.
@gurgen5217
@gurgen5217 3 ай бұрын
Ну очень нудно, очень умный и очень скучный рассказчик.
@Каролина-н2р
@Каролина-н2р 2 ай бұрын
Говорите на русском языке!
They Chose Kindness Over Abuse in Their Team #shorts
00:20
I migliori trucchetti di Fabiosa
Рет қаралды 9 МЛН
Yay, My Dad Is a Vending Machine! 🛍️😆 #funny #prank #comedy
00:17
Wait for the last one 🤣🤣 #shorts #minecraft
00:28
Cosmo Guy
Рет қаралды 25 МЛН
Perfect Pitch Challenge? Easy! 🎤😎| Free Fire Official
00:13
Garena Free Fire Global
Рет қаралды 64 МЛН
They Chose Kindness Over Abuse in Their Team #shorts
00:20
I migliori trucchetti di Fabiosa
Рет қаралды 9 МЛН