Принцип открытости/закрытости. SOLID для React

  Рет қаралды 13,768

Михаил Непомнящий

Михаил Непомнящий

Жыл бұрын

Второй принцип SOLID говорит нам о том, что программные сущности должны быть открыты для расширения, но закрыты для модификации. Разбираемся с тем, что это значит в контексте React-приложений.
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Пікірлер: 68
@BlueCell
@BlueCell Жыл бұрын
Было бы чудесно после данного цикла посмотреть ещё и паттерны
@okireev
@okireev Жыл бұрын
Контент огонь, все по понятно, без воды. Подача замечательная. Голос приятный. И темы для видео настолько подходящие, что не передать. Михаил, спасибо за видео, и продолжай в том же духе! Топ 1 канал по фронтенду.
@nikolaysmolov8031
@nikolaysmolov8031 Жыл бұрын
Спасибо за ролик! Таких хороших примеров solid в контексте react еще не встречал! И теперь знаю о библиотеке Chakra UI. Михаил, спасибо!
@koshgosh3081
@koshgosh3081 Жыл бұрын
идеально для тех, кто любит видео формат! Спасибо!
@DoSmth
@DoSmth Жыл бұрын
Спасибо, ждём продолжения!
@egorpobylets6597
@egorpobylets6597 7 ай бұрын
Спасибо! Отличное видео про принципы SOLID
@user-bp7jb5of5d
@user-bp7jb5of5d Жыл бұрын
Михаил, спасибо. Отличное видео.
@user-qj9qx2er3h
@user-qj9qx2er3h Жыл бұрын
Очень хороший пример open-closed для React'а
@andygr1n1
@andygr1n1 Жыл бұрын
Спасибо за хороший контент. Осознание принципов фундамент для разработки.
@parnasmi
@parnasmi 9 ай бұрын
Отличный урок. Спасибо!
@TheKykp
@TheKykp Жыл бұрын
Видео было очень полезным! Спасибо большое!
@Kirill_gigapsycho
@Kirill_gigapsycho Жыл бұрын
Спасибо за контент❤
@andreykrav3274
@andreykrav3274 Жыл бұрын
благодарю! очень доходчиво и понятно.
@mansurv8782
@mansurv8782 Жыл бұрын
Спасибо за полезный контент
@VIKTOR-pw8eu
@VIKTOR-pw8eu Жыл бұрын
Чудесное видео,жду продолжения
@user-rl7ly3cz6g
@user-rl7ly3cz6g Жыл бұрын
Спасибо! Очень полезно!
@laviral5311
@laviral5311 Жыл бұрын
Спасибо за данный цикл! Хорошие примеры, приятно послушать и напомнить себе, как лучше работать с кодом. Поддержу другие комменты про паттерны, был бы рад послушать о них в вашем изложении
@user-cz3ez4go4h
@user-cz3ez4go4h Жыл бұрын
спасибо большое за урок, с нетерпением будем ждать буковку L:)
@semx8372
@semx8372 Жыл бұрын
как вчера помню смотрел твои уроки по router-dom, а уже пол года работаю, спасибо за качественный видос!
@jackshepard9185
@jackshepard9185 Жыл бұрын
долги ли учился? какие материалы использовал? сколько собесов прошёл?
@semx8372
@semx8372 Жыл бұрын
@@jackshepard9185 Где-то год в Украине нужно потратить чтобы взяли, всего 12+- собесов с HR, 4-5 тех собесов
@alexeyilin1527
@alexeyilin1527 Жыл бұрын
Спасибо за видос, осталось понять как этот InputGroup реализовать самостоятельно)
@vasyanikolayev2813
@vasyanikolayev2813 Жыл бұрын
Миша, пилите еще! 👍🏻
@RoMcHiKo0o
@RoMcHiKo0o Жыл бұрын
жду видосы про следующие принципы
@mikhailblush5261
@mikhailblush5261 Жыл бұрын
круто, спасибо. Отдельно хотел бы отметить переходы между скринами кусков кода)
@bobo_6
@bobo_6 Жыл бұрын
Привет Михаил! Очень классный контент. Пожалуйста сделай видео про git(pull request, merge, branch и тд.) в общем сложные темы в git.
@user-nr4ry1uc4l
@user-nr4ry1uc4l Жыл бұрын
Спасибо)
@miloman1995s
@miloman1995s Жыл бұрын
то что мне было нужно....мне бы такого ментора и практику правильного написания с ревью, это было бы просто восхитительно
@user-qq8wi5mo6s
@user-qq8wi5mo6s Жыл бұрын
Спасибо
@vladimirmuratov2220
@vladimirmuratov2220 Жыл бұрын
Отдельное спасибо за знакомство с библиотекой Chakra UI. Теперь писать тэги html и прописывать к ним стили в отдельном css файле просто ... ломает 🤭
@somewonderfulguy
@somewonderfulguy 4 ай бұрын
Додам ще такий патерн як Prop Getters. В блозі Kent. C. Dodds можна почитати про нього. А передача в пропси готової JSX-разметки це, власно, Component Composition.
@TheKykp
@TheKykp Жыл бұрын
Привет Михаил, а про Архитектуру будет что нибудь?:) Там fsd модная тема какая то, вы применяете какую на работе?
@mishanep
@mishanep Жыл бұрын
Не сыпьте соль. Я мечтаю попасть на проект, где хотя бы solid будет (не только на этапе интервью). Пока пределом мечтаний с точки зрения архитектуры был atomic design. Featured slice мы ковыряли два года назад на одном из проектов, что-то у нас уже было, но в целом под проект целиком дизайн не ложился.
@TheKykp
@TheKykp Жыл бұрын
@@mishanep понял, я просто у вас всему научился. Но мне теперь говорят - молодец, сделать можешь, но расширить такое сложно, я вот ищу, от чего отталкнуться что бы грамотно делать, а не просто ляпать. Значит я сейчас принципам солид научусь и будет нормально?:)
@mishanep
@mishanep Жыл бұрын
@@TheKykp как я могу судить? Вам виднее с какими задачами вы сегодня готовы справляться и с каким качеством. Теория хороша, но бессмысленна без практики.
@olegsh2888
@olegsh2888 Жыл бұрын
@@mishanep я даже знаю, что за проект)) Тоже до сих пор обидно, что не влетело. По хорошему, надо сначала выстраивать архитектуру, а потом уже поверх нее всё остальное. Натягивать сову на глобус в обратном порядке - идея так себе, к сожалению. Но реальность почему-то только обратный порядок и предлагает)
@SMILESHOW1337
@SMILESHOW1337 7 ай бұрын
а если разница только в стилях, jsx такой же? передавать пропсы, с помощь которых задавать другие классы для тех же элементов?
@user-cu2ng7gf4k
@user-cu2ng7gf4k Жыл бұрын
Михаил, добрый день! Прости за оффтоп, но поделитесь, пожалуйста, мыслями (хотя бы кратко) о стремительно развивающихся нейросетях. А именно - как адаптироваться, чего нужно остерегаться , чего напротив можно не бояться? Похоже, что frontend это коснулось/коснется в первую очередь. Уверен, что это тема набила оскомину, но хочется услышать ваше мнение. И еще - планируете ли вы обучающие ролики, где будете применять новые "нейро-инструменты"?
@mishanep
@mishanep Жыл бұрын
Почему вы считаете, что фронтенд это коснется в первую очередь? Со своей стороны замечу, что для создания сайтов десятилетиями существуют простые инструменты, не требующие особых навыков (WordPress, Tilda, wix и ряд nocode решений). У них есть сильные и слабые стороны. То же и с нейросетями. Делают и поддерживают их те же люди, обучают на материалах, которые могут содержать ошибки. Здесь скорее вопрос выбора ниши. За всем не поспеешь, кто-то по классике развивается, кто-то в блокчейн пошел, теперь вот open ai и его аналоги. Я за хорошие хард скиллы в первую очередь. А по необходимости под задачу можно с любым смежным инструментом разобраться.
@user-cu2ng7gf4k
@user-cu2ng7gf4k Жыл бұрын
@@mishanep Сегодня сделал валидацию формы по вашему уроку React hook form. Отрисовал инпуты через .map. И все это в TS. Open AI помог разобраться с типизацией. Но только с правильно поставленными вопросами. Спасибо, что не оставляете комментарии без ответов!
@user-gn1jl9sg8h
@user-gn1jl9sg8h 6 ай бұрын
ты НЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕРРРРРРРРРРРРРРЕЕЕЕЕЕааааааально круто объясняешь, я прошел весь курс Ивана Петриченко, но твое объеснение, в миллионы раз лучше чем у него
@nitral911
@nitral911 Жыл бұрын
Большое спасибо за видео! Очень познавательно, интересно и исчерпывающе. Но, при всем уважении, спонтанные смешки на ровном месте прям сильно режут слух...
@melodystic
@melodystic Жыл бұрын
Получается, что все библиотеки вроде chakra ui используют solid. или это не так?
@mishanep
@mishanep Жыл бұрын
Говорят, любое обобщение ошибочно. За все библиотеки сказать не могу. Но популярные часто так делают.
@RamaRama-qv3jo
@RamaRama-qv3jo Жыл бұрын
Михаил, будет ли обновление платного курса по react? Он уже устарел и не хватает TS и полноценного проекта.
@mishanep
@mishanep Жыл бұрын
Приветствую. В настоящий момент я не считаю курс устаревшим. Скорее всего возьмусь за обновление с выходом 19й версии. Но без typescript. По TS у меня есть отдельный курс и типизация Реакта там тоже есть. И проекты на всех моих курсах тоже есть. Может быть я сделаю другой курс, что-то вроде advanced react. Но добавлять TS пререквизитом для тех, кто только знакомится с реактом, я считаю перебором. В advanced уже можно подумать. Но пока новых курсов в планах нет. Возможно во второй половине года, если время будет позволять.
@RamaRama-qv3jo
@RamaRama-qv3jo Жыл бұрын
@@mishanep спасибо за ответ!
@zao4nik
@zao4nik Жыл бұрын
@@mishanep Спасибо вам большое за все курсы и за материал на канале. Почти всё что пытаюсь гуглить, то что учу сейчас находиться у вас. Но вопрос о курсе по Реакту и вообще по Реакту. Начиная учить Реакт примерно сейчас +- пару месяцев, почти 100% тех кто обучает, преподносит информацию примерно так, что - логика работы функциональных компонентов, ну вот как была на классах и немного подругому, короче говоря новички (и я в том числе:-) ) изучая Реакт хотим изучить так сказать "функциональный Реакт" и расширять свои знания по мере надобности "классовым Реактом", а получается, что большинство туторов, не для новичков, а для тех кто переходит с классов на хуки.. И новичкам приходиться ковырятся в классовых компонентах, что бы понять функциональные.. Это понятно, что классовые много где встречаются, и еще на них много кто пишет...
@v.demchenko
@v.demchenko Жыл бұрын
не нарушает ли open closed принцип single responsibility принцип?
@mishanep
@mishanep Жыл бұрын
Смотря как использовать. Задуманы принципы были так, чтобы использовать их в связке. А значит не должны нарушать друг друга. Первый был про единую ответственность, и если у нас есть мини-компоненты, которые мы собираем в композицию, то нарушения нет. Есть компонент, чья единственная задача - сделать композицию, есть компоненты со своими мини-задачами.
@jackshepard9185
@jackshepard9185 Жыл бұрын
Добавляя свой код в чужой, для расширения, те же самые пропсы, всё равно происходит модификация. Или смысл в том, что логику мы прописываем где-то отдельно и просто вставляем кусочек лего в пазл, не меняя строки чужого кода?
@mishanep
@mishanep Жыл бұрын
Здесь, как и везде, надо смотреть по ситуации и не оверинженерить. Если правка минимальна, можно и проп докинуть. Но логика принципа - добавить свой элемент пазла и составить композицию с тем, что было ранее.
@promoabys
@promoabys Жыл бұрын
Можно и пропсы добавлять при необходимости и код надо местами переписывать. Просто старый функционал должен продолжать работать.
@andreyn5333
@andreyn5333 Жыл бұрын
Здравствуйте, Михаил. Плейлист хороший, но это видео не понятно по своей сути. Нет примера кода, разбора, есть только ссылка на стороннюю библиотеку. Хотелось бы пример и разбор примера, как в предыдущем видео. Приведу конкретный критерий "понятного" видео и "не понятного" - после предыдущего видео об SRP я сел и отрефакторил свой код без проблем. После этого видео - нет, я не понял что делать, для каких случаев/компонентов это делать и самое главное как это делать.
@user-vs7tn3mr8v
@user-vs7tn3mr8v Жыл бұрын
картинка с роботами же нарушение single responsibility?
@mishanep
@mishanep Жыл бұрын
Почему вы так считаете?
@v.demchenko
@v.demchenko Жыл бұрын
@@mishanep ведь робот должен заниматься чем то одним судя по названию и посланию из предыдущего ролика. А тут мы добавляем в него новую функциональность. получается он уже отвечает и за то что бы порезать и за то что бы покрасить. или я что то не правильно понимаю?
@v.demchenko
@v.demchenko Жыл бұрын
Важно отметить, что принципы проектирования не всегда являются жесткими правилами, и их применение зависит от конкретной ситуации и контекста проекта. Иногда разделение функциональности может быть излишним и привести к избыточности классов. Важно стремиться к достижению баланса между принципами проектирования и понимать, как они могут быть применены в конкретных ситуациях.
@zahar1381
@zahar1381 Жыл бұрын
Михаил, как относитесь к тестированию реакт приложений? Если мы используем солид мы же ничего не можем сломать, а соответсвенно тесты это бесполезная трата времени
@mishanep
@mishanep Жыл бұрын
Я крайне положительно отношусь к тестам. Нередко чтение тест-кейсов дает больше представления о реакт-компоненте, нежели чтение кода или (если есть) документации.
@promoabys
@promoabys Жыл бұрын
От ошибок никто не застрахован. А некоторые иногда только думают, что пишут на солид))
@iGotton
@iGotton Жыл бұрын
Непонятно про отличие Расширения и Модификации. Если мы компонент расширяем, это же и есть его модификация. Вот не было у него поддержки пропса, а теперь есть. 🤷
@user-pd3wv9eb8w
@user-pd3wv9eb8w Жыл бұрын
Скорее тут подразумевается что модификации это изменение/удаление какого либо кода который уже написан
@iGotton
@iGotton Жыл бұрын
@@user-pd3wv9eb8w а как же рефакторинг? Так можно быстро превратить проект в легаси помойку
@shakapaker
@shakapaker Жыл бұрын
@@iGotton скорее всего имеется в виду что чтобы добавить фичу не надо трогать старый код, а рефакторинг это наверное само собой
@iGotton
@iGotton Жыл бұрын
@@shakapaker я не знаю как рефакторить, не трогая код)
@shakapaker
@shakapaker Жыл бұрын
@@iGotton к чему это?
@lesters
@lesters Жыл бұрын
спасибо полезная штука
Принцип подстановки Лисков. SOLID для React
15:26
Михаил Непомнящий
Рет қаралды 11 М.
КАК СПРЯТАТЬ КОНФЕТЫ
00:59
123 GO! Shorts Russian
Рет қаралды 3,2 МЛН
Omega Boy Past 3 #funny #viral #comedy
00:22
CRAZY GREAPA
Рет қаралды 35 МЛН
Hot Ball ASMR #asmr #asmrsounds #satisfying #relaxing #satisfyingvideo
00:19
Oddly Satisfying
Рет қаралды 17 МЛН
FOOTBALL WITH PLAY BUTTONS ▶️ #roadto100m
00:29
Celine Dept
Рет қаралды 77 МЛН
Deploy Vite React App to GitHub Pages (2024)
3:07
Vladyslav Dihtiarenko
Рет қаралды 3 М.
Полный курс по useId за 10 минут!
13:01
АйТи Синяк
Рет қаралды 15 М.
Глубокое копирование объекта в JavaScript
8:43
Михаил Непомнящий
Рет қаралды 20 М.
Самый простой способ начать работу с БД
22:37
Михаил Непомнящий
Рет қаралды 6 М.
Will the battery emit smoke if it rotates rapidly?
0:11
Meaningful Cartoons 183
Рет қаралды 3,5 МЛН
Задача APPLE сделать iPHONE НЕРЕМОНТОПРИГОДНЫМ
0:57
ПРОБЛЕМА МЕХАНИЧЕСКИХ КЛАВИАТУР!🤬
0:59
Корнеич
Рет қаралды 3,6 МЛН
Индуктивность и дроссель.
1:00
Hi Dev! – Электроника
Рет қаралды 1,6 МЛН
Carregando telefone com carregador cortado
1:01
Andcarli
Рет қаралды 2,2 МЛН