Как напортачить начинающему JS разработчику: принципы DRY, KISS, YAGNI, SOLID

Sdílet
Vložit
  • čas přidán 3. 07. 2024
  • ⏰ Курс JavaScript 2.0: itgid.info/course/javascript-2
    🧠 Чат Telegram c кодами задач: t.me/itgid_info
    👇 Разверни для полной информации
    💎 Курс Функции в JavaScript: itgid.info/course/function-2021
    🧑🏻‍💻 Сайт: itgid.info
    😋 Курс Методы массивов: itgid.info/course/arraymethod
    Программист оптимизировал JavaScript код по принципу DRY и получил костыли и велосипеды - разбираемся в чем проблемы, изучаем возможности оптимизации простого кода на JS, пробуем соотнести принципы DRY и KISS плюс YAGNI в JavaScript. Пишем 2 оптимизации кода.
    00:00 Принципы разработки: DRY, KISS
    01:40 Постановка задачи и решение
    05:45 Изучаем код JS оптимизированный разработчиком
    15:00 Доводим глупости до конца
    17:30 Делаем первый вариант оптимизации кода
    26:05 Второй вариант оптимизации
    Моя рабочая станция:
    Desktop: AMD Ryzen5 1600,Asus GeForce GTX 1650 Phoenix 4GB GDDR6, RAM: 16GB, Motheboard: MSI A320M PRO-M2 V2, Power: Chieftec Value APB-400B8 400W Bulk, Box: Gougar MX350 Mesh
    HDD:
    - Samsung 860 Evo-Series 500GB M.2
    - Toshiba P300 2TB
    - Silicon Power A56 256GB
    Monitors:
    - 23.8" Dell P2419HC
    - 23.8" Dell P2418D
    Mouse: Trust Verto Ergonomic Wireless
    Keyboard: HP KU-1469
    Microphone: Samson C01U Pro
    + MacBook Pro M1 13'' 8-Core CPU/8-Core GPU/16-core Neural Engine /16GB/256GB
    + IBM Lenovo ThinkPad E14 / Intel Core i5-1135G7 (4.2 ГГц) / RAM 16 ГБ / SSD 1 ТБ / Intel Iris Xe Graphics

Komentáře • 64

  • @Dimaaasik
    @Dimaaasik Před 2 lety +2

    Спасибо вам за ваш труд)

  • @bestlife9681
    @bestlife9681 Před 2 lety +5

    Спасибо!!! Учусь у вас на курсе javascript 2.0 . Классный курс. Предпологаю что буду учиться и дальше!!!! Хорошее познавательное видео спасибо.

  • @alfa_main
    @alfa_main Před 2 lety

    Очень интересно) спасибо за видео)

  • @EvgeniiBukarin-wu3rs
    @EvgeniiBukarin-wu3rs Před 6 měsíci +1

    😂 не смог написать простейшую функцию со второй попытки , отписывайтесь закрывайте видео, чувство юмора на уровне )

  • @prosklad
    @prosklad Před 2 lety +6

    Круто, спасибо вам за уроки

  • @user-yo7mw6oj4p
    @user-yo7mw6oj4p Před 2 lety

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

  • @baltica_san6047
    @baltica_san6047 Před 2 lety +4

    Интересный материал

  • @unicoxr5tj417
    @unicoxr5tj417 Před 2 lety

    сразу лайк за разборку такой темы) кодить учат все, хорошо кодить-мало кто)

  • @fatalist4446
    @fatalist4446 Před 2 lety

    спасибо. пойду поправлю код

  • @serzhuk22
    @serzhuk22 Před 2 lety +4

    Интерн с бионика приветствует) Меня радует что мой подход решения в итоге сошёлся с вашим) Успехов и лайк!

    • @itgid
      @itgid  Před 2 lety

      Спасибо. Приятно. Бионик - бест.

  • @bibblethump7756
    @bibblethump7756 Před rokem

    КРАСАВЧИК!!!!!!!!!!!!!!!!!!!!!!!

  • @IHORhoncharenko
    @IHORhoncharenko Před 2 lety +3

    100% путишествование по функциям :)

  • @kamik0t0_yt83
    @kamik0t0_yt83 Před 2 lety +4

    Интересная тема, недавно сам писал некий функционал на своем pet-проекте и тоже избавлялся от лишней вложенности. В итоге из 3-х уровней вложенности получилось свести к одному промису))). Ну и мне понравилось что профессионал думает также - сначала надо написать хоть как-то, а уже потом оптимизировать. Вообще такие вещи сами собой приходят, но говорить об этом нужно, потому что направить программиста тоже очень важно.

  • @andregraunt
    @andregraunt Před 2 lety +1

    супер

  • @akramyuldoshev4889
    @akramyuldoshev4889 Před 2 lety

    SUPER MASTER

  • @alexanderalexander7722
    @alexanderalexander7722 Před 2 lety +1

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

  • @diy-speaker
    @diy-speaker Před rokem

    Не подскажите, как сделать так, чтобы vs code камментила куски кода по хот кею, как в видео?
    Гугл только странные левые скрипты показывает ):

  • @evgenijbeljaev7431
    @evgenijbeljaev7431 Před 2 lety

    То что по завершению представил очень хорошо подойдёт начинающему новичку, - я думаю

  • @urakend
    @urakend Před 2 lety

    Еще вопрос :hover и :focus отличаются?

  • @beloff1985
    @beloff1985 Před rokem

    У вас в теге , а браузер русскоязычный, поэтому браузер предлагает перевести контент.
    Что бы не предлагал, надо изменить атрибут lang 😀

  • @-Forever-Young-
    @-Forever-Young- Před 2 lety +3

    В index.html поставьте ru в место en и переводить перехочет)

    • @itgid
      @itgid  Před 2 lety +1

      спасибо. Решил не пихать сюда обвес html - чтобы не отвлекать.

    • @MrKOHKyPEHT
      @MrKOHKyPEHT Před 2 lety

      Скорее всего перевести хочет из-за слова Lorem
      1. Предлагало перевод именно на португальский
      2. Предложение о переводе впервые появились после добавления этого слова на страницу.

  • @Fess-dt4eo
    @Fess-dt4eo Před 2 lety +1

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

    • @user-dv9fk1hd3s
      @user-dv9fk1hd3s Před 2 lety

      Функция, которая только получает значение, называется document.querySelector. Зачем нам писать ещё одну функцию, чтобы также заменить ей однострочный вызов другой? Чтобы что?

  • @MrKOHKyPEHT
    @MrKOHKyPEHT Před 2 lety +1

    Сегодня на паре проходил SOLID. Вернулся домой с учёбы - как тут у Александра видео на эту тему. Совпадение? ))

    • @itgid
      @itgid  Před 2 lety +3

      не думаю

  • @spartacusaw9478
    @spartacusaw9478 Před 2 lety +1

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

  • @sergozar
    @sergozar Před 2 lety

    То чувство когда работаешь по принципу "Наконец-то заработало, можно идти спать"

  • @artemtaylor669
    @artemtaylor669 Před 2 lety

    А как же получение кнопки? Там тоже отлично впишется эта функция))

  • @urakend
    @urakend Před 2 lety

    Как у вас подсвеченный код?Какое-то расширение наверно?

    • @user-dv9fk1hd3s
      @user-dv9fk1hd3s Před 2 lety

      Подсветка синтаксиса есть в любом редакторе кода (сейчас в блокноте не пишут). Если вопрос был про тему, то это скорее всего Monokai Dimmed

  • @user-dv8zm2kn3w
    @user-dv8zm2kn3w Před 2 lety +1

    Функциональщина же. Дэн не может терпеть в опп. Он любит функции и также делает их под любую задачу, значит и мы тоже будем.

    • @itgid
      @itgid  Před 2 lety

      А кто такой ден? И согласен - я за ООП, сколько страданий сейчас приносит реакт в процедурном стиле.

    • @euginekosenko2268
      @euginekosenko2268 Před 2 lety

      @@itgid прогрессивное человечество уже давно ведёт священную войну функциональщиков против ООП, а вы всё ещё ООП с процедурами сравниваете :-). Но да, в приведенном куске кода все парадигмы просто не могут развернуться во в ю свою мощь :-)

  • @Denimir
    @Denimir Před 2 lety

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

  • @maximworonin320
    @maximworonin320 Před 2 lety +1

    "Предложил, оптимизировал. довел до конца элементарную функцию с двумя ошибками. В принципе, можно выключать, отписываться и меня больше не смотреть"
    Хорош, Алекс, хорош

  • @Masahiko_Kai
    @Masahiko_Kai Před 2 lety

    Я бы еще const {querySelector} = document; добавил.

  • @unknown6535
    @unknown6535 Před 2 lety

    В последнем примере, всегда ищется text2, зачем искать text2, если нет text ?

    • @user-dv9fk1hd3s
      @user-dv9fk1hd3s Před 2 lety

      Для работы нам нужны оба элемента, так что не обязательно проверять их наличие по одному. Это не настолько большие накладные расходы, чтобы ради них жертвовать читаемостью и после каждого querySelector-а делать проверку

  • @igorfedor1908
    @igorfedor1908 Před 2 lety

    а почему нельзя было написать text1 && text 2 return )
    вот уже кисс пашол усложняешь ) новую функцию создал )

  • @evgeniyacherevko6633
    @evgeniyacherevko6633 Před 2 lety +3

    Александр очень принципиальный критик!

    • @itgid
      @itgid  Před 2 lety +1

      Нет. Меня тоже критикуют. Я воспринимаю критику адекватно - просто не смотрю и не читаю ее :) на самом деле классный очень пример, такой тяжело выдумать и на нем можно поучиться, поэтому я благодарен автору кода.

    • @evgeniyacherevko6633
      @evgeniyacherevko6633 Před 2 lety

      @@itgid пример отличный. Возможно у вас руки как-то дойдут до фаербейс. Он сейчас очень востребован и входит часто в требования фулстеков. Туториалов, которые хорошо его объясняли почти нет, даже на англ. есть только примеры с валидацией. Если вы созреете к этой технологии, то это будет мегакруто

  • @euginekosenko2268
    @euginekosenko2268 Před 2 lety

    Забыли ещё одну крылатую фразу: преждевременная оптимизация --- корень всех зол (с)

  • @MrKOHKyPEHT
    @MrKOHKyPEHT Před 2 lety +1

    Студент написал 2 функции что бы в дальнейшем использовать их в других работах (не факт что они пригодятся), при этом не вынес их в отдельный модуль, не экспортировал/импортировал.
    Как поступить начинающему разработчику - не вы**ываться (извиняюсь за французский).
    Не стоит на первых парах концентрироваться на соблюдении этих принципов программирования - это сильно сбивает.
    Все эти принципы очень классно усвоятся на более-менее объёмном проекте.
    SOLID помогут предотвратить боль в пальцах и заднем проходе при разрастании проекта.
    Всю теорию можно читать по несколько раз и восхищаться про себя, типа "да, да, круто. Вот это точно понадобится".
    Но набираясь опыта человек сам дойдёт до этих принципов, даже если он до этого не знал о них.
    Александру, как всегда, спасибо за видео. Человек умеет донести мысли до аудитории.

    • @itgid
      @itgid  Před 2 lety +1

      Круто. Ваш текст можно как выводы - в конце видео. Спасибо!

  • @dethhetz
    @dethhetz Před 2 lety +2

    На мой взгляд, YAGNI это очень тонкий лед.
    С одной стороны, он очень понятен и обязателен, с другой стороны, во всем надо знать меру. Профессионал всегда будет учитывать контекст задачи и думать немного наперед, закладывая в функционал чуть больше, чем необходимо. Если этого не делать и хардкодить все подряд, потом на масштабирование будет тратиться неадекватное количество времени.
    Особенно эта проблема актуальна для фрилансеров, которые могут сначала решить все в лоб, а потом в случае сhange request заказчик будет платить второй раз за переписывание того же самого функционала и даже скорее всего не узнает об этом. При этом при серьезной работе за такой подход разрабу могут и в мастер напушить.
    Лично я бы бы такую задачу решал так же в одну функцию, но добавил аргументы sourceElementSelector и targetElementSelector. Тогда в будущем можно спокойно наплодить в ДОМ еще сколько угодно элементов и кнопок, при этом пользоваться одной функцией для копирования содержимого.

  • @user-re1ri9jp3e
    @user-re1ri9jp3e Před 2 lety

    🤔 эх все это, клиа коде анд коде стаил, могут прийти только со временем на большом объеме практики и набитых шишек 😭
    Всем кто закончил курс JS 2.0 большой респект, рекомендую 👍
    Иду на react 👍😁

  • @jinke5935
    @jinke5935 Před 2 lety +5

    Я так понимаю, что начинающему программисту пока не нужно смотреть в сторону этих принципов. Для общего представления, так сказать, знать, что они есть. Иначе можно окунуться в такие дебри... Спасибо вам за детальный разбор!

    • @itgid
      @itgid  Před 2 lety +2

      Верно. Вначале нужно начать писать. Криво. Косо но писать. А потом придете уже к пониманию.

    • @jinke5935
      @jinke5935 Před 2 lety

      @@itgid , полностью с вами согласен.

    • @kamik0t0_yt83
      @kamik0t0_yt83 Před 2 lety

      Я сам как начинающий у которого свежи воспоминания о старте... только через год с лишним к этим solid'aм приходишь. Все постепенно. Пиши хоть как то и радуйся что сделал.

    • @eldaeron
      @eldaeron Před 2 lety

      Минимум год, а еще лучше 5 )))
      Если взять принципы и их всегда применять, то вместо рабочего хоть и может не красивого кода (костылей) получите, вылизывание кода, а не разработку.
      Разработчика который думает как переназвать название переменной, функции, и т.д. не любят)

  • @romandeveloper7720
    @romandeveloper7720 Před rokem

    Но в конце ты получаешь сразу два элемента - это неэффективно. Потому что, если отсутствует первый, то второй искать не надо уже.

  • @mody-pq8kd
    @mody-pq8kd Před 2 lety

    Можно было бы ещё в последний вариант добавить const {querySelector} = document

    • @itgid
      @itgid  Před 2 lety +1

      согласен.

  • @nugget_sti
    @nugget_sti Před 2 lety

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

  • @dennisfisher2684
    @dennisfisher2684 Před 2 lety