💡 Принципы SOLID для JavaScript, TypeScript, Node.js и асинхронного программирования

  Рет қаралды 12,467

Timur Shemsedinov

Timur Shemsedinov

Күн бұрын

Пікірлер: 38
@oeaoo
@oeaoo 5 ай бұрын
SOLID давно пора переосмыслять. Люди справедливо теряются в расшифровках, а также упарываются в теорию, не осознавая что на практике у них все не так солидно. Все в мире работает не абсолютно, а в меру. И принципы, возведенные в абсолют наоборот, вредят реальным проектам. Как говорят китайцы - настоящее знанее - это знание достаточности. И мудрость разработки заключается в осознавании уместности и меры следования принципам и понимании где их нужно нарушить и ради чего. Тогда разработка будет живая, а значит адаптивная, гибкая и разумная. А значит еще и гуманная, внезапно)
@1Malak16
@1Malak16 5 ай бұрын
Аминь. Подписываюсь под каждым словом.
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
Любые знания и обобщения не переносятся в другие языки автоматически, даже в одном языке с ходом времени нужно все переосмыслять, язык меняется и уже мало кто помнит про псевдомассив arguments и variable hoisting, или про то, что setTimeout может принимать первым аргументом string, а кто помнит, то хотел бы побыстрее забыть об этом.
@oeaoo
@oeaoo 5 ай бұрын
@@TimurShemsedinov ну я занимаюсь джавой и у нас огромная масса теоретических зомби. Не хочу быть категоричным, но знаю точно - очень важно различать поверхностное знание ради самоутверждения от полезного знания, "личностно перпендикулярному".
@blackbirdchannel-c7b
@blackbirdchannel-c7b 5 ай бұрын
Спасибо за хороший разговор
@artem_travlo
@artem_travlo 2 ай бұрын
супер ❤
@kai.hexendorf
@kai.hexendorf 3 ай бұрын
Не понимаю, чем так не угодили интерфейсы тайпскрипта. Пример DI принципа: interface IEncoder { encode: () => any } class FileEncoder implements IEncoder { encode() {...} } class FileStorage { private readonly _encoder: IEncoder constructor(encoder: IEncoder) { this._encoder = encoder } } Модуль верхнего уровня (FileStorage) и нижнего (FileEncoder) зависят от абстракции - IEncoder. Кстати, под абстракциями в ооп мы подразумеваем интерфейсы, абстрактные классы и обобщенные типы. Поэтому "конкретная абстракция" - это оксюморон.
@TimurShemsedinov
@TimurShemsedinov 3 ай бұрын
@@kai.hexendorf Я ни где на интерфейсы не гоню, их нужно использовать даже в js, и нас не должно даже останавливать, что в js они не явные, их можно описать .d.ts или jsdoc но все это для процесса разработки, потом в рантайме они все равно вычисляются как "форма объектов" но для рантайма важна даже последовательность полей, а не только имена и типы. А абстракции - даже переменная это абстракция над адресацией памяти, а цикл - абстракция над потоком управления. Конкретная абстракция - это то, что можно инстанциировать, ну вот ReadableStream, а есть и абстрактный класс Stream, который мы не инстанциируем напрямую.
@kai.hexendorf
@kai.hexendorf 3 ай бұрын
"Мы описываем интерфейс, но вся асинхронная составляющая кода теряется. У нас для асинхронного кода нет никакого способа это декларативно описать - как будет работать промис, чтобы прочекать его правильное поведение". А зачем чекать? Идея интерфейса как раз заключается в сокрытии внутренней реализации. Для клиента интерфейса нужно знать как подписаться/отписаться на событие, которое произойдет в будущем, и его даже не должно волновать, будут ли там вообще промисы и как устроены микротаски. Не нравятся промисы, можно задействовать RX. В основе любой реактивной библиотеки лежит паттерн Observable, чьи интерфейсы элементарны и понятны. Не нравится RXjs, можно написать свой минимальный набор реактивных команд на тайпскрипте и дженериках.
@Ajax222able
@Ajax222able 5 ай бұрын
Солидное видео
@RussellCrowe-rd5xi
@RussellCrowe-rd5xi 5 ай бұрын
Здравствуйте Тимур! Какую документацию по JS вы можете посоветовать новичку, MDN или же его аналог doka? Заранее признателен за ответ
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
MDN лучше всего
@RussellCrowe-rd5xi
@RussellCrowe-rd5xi 5 ай бұрын
@@TimurShemsedinov А стоит ли использовать learnJS для подготовки к собеседованиям к примеру, или это не надежный русурс?
@He1ss
@He1ss 5 ай бұрын
@@RussellCrowe-rd5xi learnJs прекрасный источник, с его помощью вы сможете успешно пройти любое интервью по javascript
@chikenmacnugget
@chikenmacnugget 4 ай бұрын
@@RussellCrowe-rd5xi лерн жс придурочный ресурс
@ЕгорЯкименко-п6м
@ЕгорЯкименко-п6м 3 ай бұрын
@@chikenmacnugget а почему, вроде ведь был не так плох?
@somnium2405
@somnium2405 5 ай бұрын
Кстати странно, что empty element приобразовывается в undefined а не в null
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
Это не странно, массивы в js, конечно, универсальная штука, но массивы объектов обычно маленькие, а большими бывают массивы чисел. Ну вот null это пустое значение для ссылочных типов, а undefined - для скалярных. Значит можно пренебречь тем, как обрабатываются маленькие массивы и оптимизировать дырявые массивы для чисел.
@KvN-UA
@KvN-UA 5 ай бұрын
‼⏳ Сподобалась ідея зробити семінар і взяти конкретну задачу щоб chatGPT вирішував її в різних підходах / стилях, можливо мовах 💯
@johnstrayk5208
@johnstrayk5208 5 ай бұрын
Сколько же у вас свободного времени такие ролики делать
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
Три таких семинара в неделю
@oleksandrivashchenko7916
@oleksandrivashchenko7916 5 ай бұрын
Ждём грасп
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
Первая часть уже записана
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
Получаем GRASP
@erjigit17
@erjigit17 5 ай бұрын
Звук, пожалуйста исправьте микрофон
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
А что не так со звуком?
@andreygazhala7577
@andreygazhala7577 5 ай бұрын
Всё ок со звуком
@TheLevius
@TheLevius 5 ай бұрын
@@andreygazhala7577 для уровня телефонного разговора да. Контента выходит много, а качество звука это важнейшая составляющая и за это время можно было бы озаботиться и вложиться в звуковуху и микрофон, а не сидеть с гарнитуры
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
@@TheLevius дело в том, что это семинар, а не контент, я вообще контент не выпускаю
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
Микрофоны rode и sennheiser на полочке стоят, но это не удобно и я не вижу разницы в звуке, на них и на pixel buds
@dimapopov5962
@dimapopov5962 5 ай бұрын
1:00 Немає інтерфейсів в JS.
@TimurShemsedinov
@TimurShemsedinov 5 ай бұрын
Те, що їх нема, це не не привід їх не використовувати
@1Malak16
@1Malak16 5 ай бұрын
Ахах) Эта пять
У вас там какие таланты ?😂
00:19
Карина Хафизова
Рет қаралды 20 МЛН
Elza love to eat chiken🍗⚡ #dog #pets
00:17
ElzaDog
Рет қаралды 21 МЛН
Motorbike Smashes Into Porsche! 😱
00:15
Caters Clips
Рет қаралды 22 МЛН
HELP!!!
00:46
Natan por Aí
Рет қаралды 46 МЛН
The Right way to write Nest.js & Typescript clean-code - SOLID
17:55
Просто о SOLID (Принципы SOLID)
15:54
webDev
Рет қаралды 222 М.
ВОДОРОД: идеальное топливо или хайп?🔥
1:01:34
СтыкНаук с Алексеем Кияном
Рет қаралды 71
У вас там какие таланты ?😂
00:19
Карина Хафизова
Рет қаралды 20 МЛН