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

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ต.ค. 2024
  • Второй принцип SOLID говорит нам о том, что программные сущности должны быть открыты для расширения, но закрыты для модификации. Разбираемся с тем, что это значит в контексте React-приложений.
    Мои курсы по вебу с купонами:
    ✅ mishanep.com/
    📢 Поддержка канала:
    / mishanep
    www.tinkoff.ru...
    paypal.me/mish...

ความคิดเห็น • 70

  • @BlueCell
    @BlueCell ปีที่แล้ว +52

    Было бы чудесно после данного цикла посмотреть ещё и паттерны

  • @okireev
    @okireev ปีที่แล้ว +8

    Контент огонь, все по понятно, без воды. Подача замечательная. Голос приятный. И темы для видео настолько подходящие, что не передать. Михаил, спасибо за видео, и продолжай в том же духе! Топ 1 канал по фронтенду.

  • @nikolaysmolov8031
    @nikolaysmolov8031 ปีที่แล้ว +3

    Спасибо за ролик! Таких хороших примеров solid в контексте react еще не встречал! И теперь знаю о библиотеке Chakra UI. Михаил, спасибо!

  • @koshgosh3081
    @koshgosh3081 ปีที่แล้ว +1

    идеально для тех, кто любит видео формат! Спасибо!

  • @egorpobylets6597
    @egorpobylets6597 ปีที่แล้ว

    Спасибо! Отличное видео про принципы SOLID

  • @alexeyilin1527
    @alexeyilin1527 ปีที่แล้ว

    Спасибо за видос, осталось понять как этот InputGroup реализовать самостоятельно)

  • @parnasmi
    @parnasmi ปีที่แล้ว

    Отличный урок. Спасибо!

  • @ДанилЭкорт
    @ДанилЭкорт ปีที่แล้ว +2

    Очень хороший пример open-closed для React'а

  • @TheKykp
    @TheKykp ปีที่แล้ว

    Видео было очень полезным! Спасибо большое!

  • @andygr1n1
    @andygr1n1 ปีที่แล้ว

    Спасибо за хороший контент. Осознание принципов фундамент для разработки.

  • @semx8372
    @semx8372 ปีที่แล้ว +1

    как вчера помню смотрел твои уроки по router-dom, а уже пол года работаю, спасибо за качественный видос!

    • @JackShepards
      @JackShepards ปีที่แล้ว

      долги ли учился? какие материалы использовал? сколько собесов прошёл?

    • @semx8372
      @semx8372 ปีที่แล้ว +1

      @@JackShepards Где-то год в Украине нужно потратить чтобы взяли,
      всего 12+- собесов с HR, 4-5 тех собесов

  • @AleksandrNeo
    @AleksandrNeo ปีที่แล้ว

    Спасибо, ждём продолжения!

  • @mansurv8782
    @mansurv8782 ปีที่แล้ว

    Спасибо за полезный контент

  • @АлександрЮсюз-я8м
    @АлександрЮсюз-я8м ปีที่แล้ว

    спасибо большое за урок, с нетерпением будем ждать буковку L:)

  • @АлексейСтепанов-к9о
    @АлексейСтепанов-к9о ปีที่แล้ว

    Михаил, спасибо. Отличное видео.

  • @vasyanikolayev2813
    @vasyanikolayev2813 ปีที่แล้ว

    Миша, пилите еще! 👍🏻

  • @RoMcHiKo0o
    @RoMcHiKo0o ปีที่แล้ว +1

    жду видосы про следующие принципы

  • @Максим-д1у4щ
    @Максим-д1у4щ ปีที่แล้ว

    Спасибо! Очень полезно!

  • @andreykrav3274
    @andreykrav3274 ปีที่แล้ว

    благодарю! очень доходчиво и понятно.

  • @Kirill_gigapsycho
    @Kirill_gigapsycho ปีที่แล้ว

    Спасибо за контент❤

  • @laviral5311
    @laviral5311 ปีที่แล้ว

    Спасибо за данный цикл! Хорошие примеры, приятно послушать и напомнить себе, как лучше работать с кодом. Поддержу другие комменты про паттерны, был бы рад послушать о них в вашем изложении

  • @VIKTOR-pw8eu
    @VIKTOR-pw8eu ปีที่แล้ว

    Чудесное видео,жду продолжения

  • @mikhailblush5261
    @mikhailblush5261 ปีที่แล้ว

    круто, спасибо. Отдельно хотел бы отметить переходы между скринами кусков кода)

  • @miloman1995s
    @miloman1995s ปีที่แล้ว

    то что мне было нужно....мне бы такого ментора и практику правильного написания с ревью, это было бы просто восхитительно

  • @bobo_6
    @bobo_6 ปีที่แล้ว +1

    Привет Михаил! Очень классный контент. Пожалуйста сделай видео про git(pull request, merge, branch и тд.) в общем сложные темы в git.

  • @АртурРахматов-г4ъ
    @АртурРахматов-г4ъ ปีที่แล้ว

    Спасибо)

  • @vladimirmuratov2220
    @vladimirmuratov2220 ปีที่แล้ว

    Отдельное спасибо за знакомство с библиотекой Chakra UI. Теперь писать тэги html и прописывать к ним стили в отдельном css файле просто ... ломает 🤭

  • @ДмитрийСентюрев-э2ф
    @ДмитрийСентюрев-э2ф ปีที่แล้ว

    Спасибо

  • @tachikaze.
    @tachikaze. 15 วันที่ผ่านมา

    Может ли HOC решить эту же проблему? Причем и выглядеть это будет проще. По типу у нас есть базовый инпут и хоки которые навешивают на этот инпут какой то функционал и ui?

  • @SMILESHOW1337
    @SMILESHOW1337 ปีที่แล้ว

    а если разница только в стилях, jsx такой же? передавать пропсы, с помощь которых задавать другие классы для тех же элементов?

  • @andreyn5333
    @andreyn5333 ปีที่แล้ว

    Здравствуйте, Михаил.
    Плейлист хороший, но это видео не понятно по своей сути. Нет примера кода, разбора, есть только ссылка на стороннюю библиотеку. Хотелось бы пример и разбор примера, как в предыдущем видео.
    Приведу конкретный критерий "понятного" видео и "не понятного" - после предыдущего видео об SRP я сел и отрефакторил свой код без проблем. После этого видео - нет, я не понял что делать, для каких случаев/компонентов это делать и самое главное как это делать.

  • @TheKykp
    @TheKykp ปีที่แล้ว +2

    Привет Михаил, а про Архитектуру будет что нибудь?:) Там fsd модная тема какая то, вы применяете какую на работе?

    • @mishanep
      @mishanep  ปีที่แล้ว +6

      Не сыпьте соль. Я мечтаю попасть на проект, где хотя бы solid будет (не только на этапе интервью). Пока пределом мечтаний с точки зрения архитектуры был atomic design. Featured slice мы ковыряли два года назад на одном из проектов, что-то у нас уже было, но в целом под проект целиком дизайн не ложился.

    • @TheKykp
      @TheKykp ปีที่แล้ว

      @@mishanep понял, я просто у вас всему научился. Но мне теперь говорят - молодец, сделать можешь, но расширить такое сложно, я вот ищу, от чего отталкнуться что бы грамотно делать, а не просто ляпать. Значит я сейчас принципам солид научусь и будет нормально?:)

    • @mishanep
      @mishanep  ปีที่แล้ว +2

      @@TheKykp как я могу судить? Вам виднее с какими задачами вы сегодня готовы справляться и с каким качеством. Теория хороша, но бессмысленна без практики.

    • @olegsh2888
      @olegsh2888 ปีที่แล้ว +1

      @@mishanep я даже знаю, что за проект)) Тоже до сих пор обидно, что не влетело. По хорошему, надо сначала выстраивать архитектуру, а потом уже поверх нее всё остальное. Натягивать сову на глобус в обратном порядке - идея так себе, к сожалению. Но реальность почему-то только обратный порядок и предлагает)

  • @ИззатТурсунов
    @ИззатТурсунов 11 หลายเดือนก่อน

    ты НЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕРРРРРРРРРРРРРРЕЕЕЕЕЕааааааально круто объясняешь, я прошел весь курс Ивана Петриченко, но твое объеснение, в миллионы раз лучше чем у него

  • @v.demchenko
    @v.demchenko ปีที่แล้ว +1

    не нарушает ли open closed принцип single responsibility принцип?

    • @mishanep
      @mishanep  ปีที่แล้ว

      Смотря как использовать. Задуманы принципы были так, чтобы использовать их в связке. А значит не должны нарушать друг друга.
      Первый был про единую ответственность, и если у нас есть мини-компоненты, которые мы собираем в композицию, то нарушения нет. Есть компонент, чья единственная задача - сделать композицию, есть компоненты со своими мини-задачами.

  • @nitral911
    @nitral911 ปีที่แล้ว

    Большое спасибо за видео! Очень познавательно, интересно и исчерпывающе.
    Но, при всем уважении, спонтанные смешки на ровном месте прям сильно режут слух...

  • @АрчибальтГугенов
    @АрчибальтГугенов ปีที่แล้ว

    Михаил, добрый день! Прости за оффтоп, но поделитесь, пожалуйста, мыслями (хотя бы кратко) о стремительно развивающихся нейросетях. А именно - как адаптироваться, чего нужно остерегаться , чего напротив можно не бояться? Похоже, что frontend это коснулось/коснется в первую очередь.
    Уверен, что это тема набила оскомину, но хочется услышать ваше мнение.
    И еще - планируете ли вы обучающие ролики, где будете применять новые "нейро-инструменты"?

    • @mishanep
      @mishanep  ปีที่แล้ว +2

      Почему вы считаете, что фронтенд это коснется в первую очередь?
      Со своей стороны замечу, что для создания сайтов десятилетиями существуют простые инструменты, не требующие особых навыков (WordPress, Tilda, wix и ряд nocode решений). У них есть сильные и слабые стороны. То же и с нейросетями. Делают и поддерживают их те же люди, обучают на материалах, которые могут содержать ошибки. Здесь скорее вопрос выбора ниши. За всем не поспеешь, кто-то по классике развивается, кто-то в блокчейн пошел, теперь вот open ai и его аналоги. Я за хорошие хард скиллы в первую очередь. А по необходимости под задачу можно с любым смежным инструментом разобраться.

    • @АрчибальтГугенов
      @АрчибальтГугенов ปีที่แล้ว

      @@mishanep Сегодня сделал валидацию формы по вашему уроку React hook form. Отрисовал инпуты через .map. И все это в TS. Open AI помог разобраться с типизацией. Но только с правильно поставленными вопросами.
      Спасибо, что не оставляете комментарии без ответов!

  • @Dik131WZD
    @Dik131WZD 2 หลายเดือนก่อน

    А сама chakra ui на Docusaurus написана?

  • @somewonderfulguy
    @somewonderfulguy 9 หลายเดือนก่อน

    Додам ще такий патерн як Prop Getters. В блозі Kent. C. Dodds можна почитати про нього.
    А передача в пропси готової JSX-разметки це, власно, Component Composition.

  • @melodystic
    @melodystic ปีที่แล้ว

    Получается, что все библиотеки вроде chakra ui используют solid. или это не так?

    • @mishanep
      @mishanep  ปีที่แล้ว +1

      Говорят, любое обобщение ошибочно. За все библиотеки сказать не могу. Но популярные часто так делают.

  • @RamaRama-qv3jo
    @RamaRama-qv3jo ปีที่แล้ว

    Михаил, будет ли обновление платного курса по react? Он уже устарел и не хватает TS и полноценного проекта.

    • @mishanep
      @mishanep  ปีที่แล้ว +4

      Приветствую.
      В настоящий момент я не считаю курс устаревшим. Скорее всего возьмусь за обновление с выходом 19й версии. Но без typescript. По TS у меня есть отдельный курс и типизация Реакта там тоже есть. И проекты на всех моих курсах тоже есть.
      Может быть я сделаю другой курс, что-то вроде advanced react. Но добавлять TS пререквизитом для тех, кто только знакомится с реактом, я считаю перебором. В advanced уже можно подумать. Но пока новых курсов в планах нет. Возможно во второй половине года, если время будет позволять.

    • @RamaRama-qv3jo
      @RamaRama-qv3jo ปีที่แล้ว

      @@mishanep спасибо за ответ!

    • @zao4nik
      @zao4nik ปีที่แล้ว

      @@mishanep Спасибо вам большое за все курсы и за материал на канале. Почти всё что пытаюсь гуглить, то что учу сейчас находиться у вас. Но вопрос о курсе по Реакту и вообще по Реакту. Начиная учить Реакт примерно сейчас +- пару месяцев, почти 100% тех кто обучает, преподносит информацию примерно так, что - логика работы функциональных компонентов, ну вот как была на классах и немного подругому, короче говоря новички (и я в том числе:-) ) изучая Реакт хотим изучить так сказать "функциональный Реакт" и расширять свои знания по мере надобности "классовым Реактом", а получается, что большинство туторов, не для новичков, а для тех кто переходит с классов на хуки.. И новичкам приходиться ковырятся в классовых компонентах, что бы понять функциональные.. Это понятно, что классовые много где встречаются, и еще на них много кто пишет...

  • @JackShepards
    @JackShepards ปีที่แล้ว

    Добавляя свой код в чужой, для расширения, те же самые пропсы, всё равно происходит модификация. Или смысл в том, что логику мы прописываем где-то отдельно и просто вставляем кусочек лего в пазл, не меняя строки чужого кода?

    • @mishanep
      @mishanep  ปีที่แล้ว +1

      Здесь, как и везде, надо смотреть по ситуации и не оверинженерить. Если правка минимальна, можно и проп докинуть. Но логика принципа - добавить свой элемент пазла и составить композицию с тем, что было ранее.

    • @promoabys
      @promoabys ปีที่แล้ว

      Можно и пропсы добавлять при необходимости и код надо местами переписывать.
      Просто старый функционал должен продолжать работать.

  • @ЕвгенийЛитвиненко-з3к
    @ЕвгенийЛитвиненко-з3к ปีที่แล้ว

    картинка с роботами же нарушение single responsibility?

    • @mishanep
      @mishanep  ปีที่แล้ว

      Почему вы так считаете?

    • @v.demchenko
      @v.demchenko ปีที่แล้ว +1

      @@mishanep ведь робот должен заниматься чем то одним судя по названию и посланию из предыдущего ролика.
      А тут мы добавляем в него новую функциональность. получается он уже отвечает и за то что бы порезать и за то что бы покрасить.
      или я что то не правильно понимаю?

    • @v.demchenko
      @v.demchenko ปีที่แล้ว

      Важно отметить, что принципы проектирования не всегда являются жесткими правилами, и их применение зависит от конкретной ситуации и контекста проекта. Иногда разделение функциональности может быть излишним и привести к избыточности классов. Важно стремиться к достижению баланса между принципами проектирования и понимать, как они могут быть применены в конкретных ситуациях.

  • @zahar1381
    @zahar1381 ปีที่แล้ว

    Михаил, как относитесь к тестированию реакт приложений? Если мы используем солид мы же ничего не можем сломать, а соответсвенно тесты это бесполезная трата времени

    • @mishanep
      @mishanep  ปีที่แล้ว +2

      Я крайне положительно отношусь к тестам. Нередко чтение тест-кейсов дает больше представления о реакт-компоненте, нежели чтение кода или (если есть) документации.

    • @promoabys
      @promoabys ปีที่แล้ว

      От ошибок никто не застрахован.
      А некоторые иногда только думают, что пишут на солид))

  • @iGotton
    @iGotton ปีที่แล้ว

    Непонятно про отличие Расширения и Модификации. Если мы компонент расширяем, это же и есть его модификация. Вот не было у него поддержки пропса, а теперь есть. 🤷

    • @Кирилл-у3г6ы
      @Кирилл-у3г6ы ปีที่แล้ว

      Скорее тут подразумевается что модификации это изменение/удаление какого либо кода который уже написан

    • @iGotton
      @iGotton ปีที่แล้ว +2

      @@Кирилл-у3г6ы а как же рефакторинг? Так можно быстро превратить проект в легаси помойку

    • @shakapaker
      @shakapaker ปีที่แล้ว

      @@iGotton скорее всего имеется в виду что чтобы добавить фичу не надо трогать старый код, а рефакторинг это наверное само собой

    • @iGotton
      @iGotton ปีที่แล้ว +2

      @@shakapaker я не знаю как рефакторить, не трогая код)

    • @shakapaker
      @shakapaker ปีที่แล้ว

      @@iGotton к чему это?

  • @lesters
    @lesters ปีที่แล้ว

    спасибо полезная штука