Что делать, если твой код ... не очень? Изучаем принципы Clean Code

Поділитися
Вставка
  • Опубліковано 15 чер 2024
  • В этом видео поговорим, на что обратить внимание, когда язык программирования и технологии вы уже освоили, но код оставляет желать лучшего. Как научиться писать чистый код, а также принципы и правила Clean Code.
    А также небольшое объявление: в этом месяце мы разыграем книгу Боба Мартина “Чистый код”, для того, чтобы принять участие, вам необходимо найти часть промокода в этом видео, а в следующей части - вторую, соединить и передать нам. “Как” мы расскажем в следующей части видео про клин код. Будьте внимательны. Поехали!
    Плейлист по Клин Коду - • Clean Code (Как помыть...
    Когда нужно писать плохой код - • Когда нужно писать пло...
    Время "После праздников" уже наступило, поэтому не откладывай обучение!
    🔥 Регистрируйся на курсы программирования со скидками от -50% - go.foxminded.ua/3HtEAGF
    ⌛: Скидка действует до 31.01.2024.
    🔥 Новый поток авторского тренинга Сергея Немчинского GRASP and GoF Design patterns стартует уже 01.02.2024
    Регистрация 👉 go.foxminded.ua/3NZrOmR
    🧠 Регистрируйся прямо сейчас на менторинг
    ⬇️ Учись у профи ⬇️
    🎓 Менторинг:
    JAVA - go.foxminded.ua/41U7cT0
    PYTHON - go.foxminded.ua/3tMpx7V
    C#/.NET - go.foxminded.ua/3Hiyf0A
    ANDROID - go.foxminded.ua/41UQWRy
    FRONT-END (ANGULAR, REACT) - go.foxminded.ua/3NWvwhh
    SALESFORCE Developer - go.foxminded.ua/3Si55Fr
    UI/UX дизайн - go.foxminded.ua/48NBY20
    Unreal Engine - go.foxminded.ua/3TSm4ze
    QA Automation - go.foxminded.ua/3NZi3VQ
    IOS разработка - go.foxminded.ua/3RSDJUR
    PHP - go.foxminded.ua/3He9Nxs
    Unity - go.foxminded.ua/48wDLbV
    NODE.JS - go.foxminded.ua/3He9SRM
    GOLANG - go.foxminded.ua/47thfPT
    Обучение на проекте - go.foxminded.ua/3TSS8mD
    Курсы для новичков - go.foxminded.ua/3NZisHQ
    🎓 Продвинутые курсы для состоявшихся девелоперов:
    Enterprise patterns - go.foxminded.ua/48xDdTi
    Алгоритмы и структуры данных - go.foxminded.ua/3tZB6IN
    C# NEXT - go.foxminded.ua/3Hh8YnK
    🔧 Пробное техническое собеседование со специалистом уровня Senior Developer/ Team Leader - go.foxminded.ua/41SYBQv
    👔 Карьерная консультация с Сергеем Немчинским - go.foxminded.ua/3tZXlhI
    Есть вопросы по обучению в FoxmindEd? Пишите нам в телеграм - t.me/foxminded
    Вы можете стать спонсором канала и получать плюшки - / @sergeynemchinskiy
    ❤ FoxmindEd в Instagram: / foxminded.ua
    Сайт FoxmindEd для новичков: go.foxminded.ua/3NZZ1Po
    Сайт для разработчиков уровня мидл+: go.foxminded.ua/3O0WBzE
    FoxmindEd в ФБ: / foxmindedco
    FoxmindEd в Instagram: / foxminded.ua
    Мой Telegram: t.me/nemchinskiyOnBusiness
    Для деловых запросов: youtube@foxminded.ua
    Тайминг:
    00:00 - Вступление
    00:47 - Клин код Роберта Мартина
    02:34 - Хороший и плохой код
    07:11 - Ценность плохого и
    09:08 - Качество кода
    09:54 - Как прокачать клин код
    11:46 - Название
    14:39 - Методы
    15:38 - Комментарии: хорошие и плохие
    17:57 - Форматирование
    20:07 - Объекты и структуры
    20:19 - Error handling
    22:55 - Правила простого дизайна 22:55
    (по Кенту Беку)
    #nemchinskiy

КОМЕНТАРІ • 85

  • @SergeyNemchinskiy
    @SergeyNemchinskiy  4 місяці тому

    Время "После праздников" уже наступило, поэтому не откладывай обучение!
    🔥 Регистрируйся на курсы программирования со скидками от -50% - go.foxminded.ua/3HtEAGF
    ⌛: Скидка действует до 31.01.2024.

  • @sergeypekar1058
    @sergeypekar1058 5 місяців тому +65

    Ну и куда же без этого анекдота:
    Как реагируют разные разработчики на фразу "Твой код говно".
    Junior: - "А-а-а-а меня уволят и я умру!"
    Middle: - "Что я могу сделать чтобы мой код стал лучше?"
    Senior: - "Я знаю!"
    Архитектор: - "А нахрена ты туда полез?!"

    • @woodzimierz9621
      @woodzimierz9621 5 місяців тому +6

      Я у таких випадках кажу: "Я ще не рефакторив!"

    • @user-gx8gk9ur1n
      @user-gx8gk9ur1n 5 місяців тому +2

      Это драфтовый коммит)

    • @sergeypekar1058
      @sergeypekar1058 5 місяців тому

      @@user-gx8gk9ur1n Тогда PR должен быть соответствующий 😁

    • @sergeypekar1058
      @sergeypekar1058 5 місяців тому

      @@woodzimierz9621 а зачем тогда PR делаешь? 😁

  • @sokolov_sergey
    @sokolov_sergey 5 місяців тому +36

    Вы недопоняли, просто кто первый написал корявый код, позаботился о коллегах и их хорошей зп и востребованности😂

  • @SerzhNesteruk
    @SerzhNesteruk 5 місяців тому +12

    Видео о запахах кода (code smells) для меня будет очень даже интересным 🙂

  • @p.bakuard8648
    @p.bakuard8648 5 місяців тому +7

    Интересно было бы посмотреть видео с разбором кода (как плохого, так и хорошего).

    • @QwDragon
      @QwDragon 5 місяців тому +1

      Есть офигенный нюанс, про который никто не говорит. Никто не сидит и не читает код как книгу просто потому, что интересно. С большой вероятностью тебе дали баг, что что-то не работает, и когда ты будешь через step in проходить все функции в поисках того, что ж там пошло не так, то мелкие однострочные функции будут офигенно бесить. Всё постоянно прыгает фиг знает куда, посмотреть на пару строк выше не вариант из-за того, что ты вообще в другом файле, надо постоянно тыкать мышкой коллстек туда-сюда и получается полная жесть. И никакие красивые имена не спасут. А вот если есть большой метод, в котором всё последовательно написано и работает, то дебажится шикарно. Ограничение по размеру и уровням вложенности это самое надуманное ограничение, которое на самом деле пытается заменить собой принцип DRY - а надо просто придерживаться DRY, а нарезку на методы где попало не пихать.

  • @borisisavnin9983
    @borisisavnin9983 5 місяців тому +2

    Формат хороший)
    Спасибо, Сергей+!

  • @illia4228
    @illia4228 5 місяців тому

    Круто! Будет интересно посмотреть тоже самое на примерах)

  • @aanistratenko
    @aanistratenko 5 місяців тому +3

    Как всегда точно, кратко, информативно и с юмором 💪

  • @feddos4227
    @feddos4227 5 місяців тому +4

    6:50 - На самом деле, IoT в частности и немаленькая часть embedded в общем, уже давно ушли в сторону красивого кода, вместо оптимального. Если посмотреть на то, как написаны HAL для современных микрух, то там от оптимальности не то что бы много чего осталось :) Многие даже забивают на DMA и интеррапты, а просто возлагают эти все задачи на RTOS. В итоге, часто вижу проекты, где для задач чуть сложнее чем помигать светодиодом, используют довольно мощные микроконтроллеры с большим объемом памяти, чисто что бы все те абстракции туда потом влезли :)

  • @chugaister7538
    @chugaister7538 5 місяців тому +3

    8:00 - Как тебе спится, Джон-Серийный программист?

  • @Fenixtremo
    @Fenixtremo 5 місяців тому +3

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

    • @rebrov_vyacheslav
      @rebrov_vyacheslav 5 місяців тому

      пора над тщеславием поработать

  • @user-fe2ow2jy9y
    @user-fe2ow2jy9y 5 місяців тому

    Формат топ, ви молодець, дивлюсь ваші відео ще з моменту початку навчання програмуванню, зараз вже працюю, але ваші відео допомагають навчатися і далі, тож дякую!

    • @alexandrapersukova
      @alexandrapersukova 4 місяці тому

      Дякуємо! Який напрямок обрали? Вчились самостійно чи на курсах?

  • @vitaliy0192
    @vitaliy0192 5 місяців тому +1

    Ещё таких видео! Очень интересно смотреть.

  • @xvoidee
    @xvoidee 5 місяців тому +6

    Если ваш код с запашком 💩 то зажмите нос и работайте дальше 😊

  • @user-jz1sm9mb4k
    @user-jz1sm9mb4k 5 місяців тому +1

    Интересно, как и всегда) про code smells видео конечно нужно и разбор с примерами тоже было бы здорово

  • @MichaelKondrashin
    @MichaelKondrashin 5 місяців тому +2

    Общее правило звучит так: код нужно писать "хороший". Разумеется, выбирая алгоритмы с правильной асимптотикой. И только потом, если будет тормозить и профайлер покажет в каком месте, тогда можно начать оптимизацию (раскручивать циклы, делать все функции инлайн, писать вставки на ассемблере и так далее). В любом случае, будет всегда в запасе "референсный" код, который работает _правильно_. Потому, что оптимизированный код очень трудно развивать и всегда важен пусть медленно, но работающий код. Скажем, удобно написать всяческие тесты на рандомных входных данных и сравнивать результат работы "референсного"/"хорошего" и "оптимизированного" когда. Чтобы по ходу оптимизации не сломать что-нибудь.

  • @AntonArhipov
    @AntonArhipov 5 місяців тому +3

    "Чистый код" обычно хвалят те кто прочитал только начало :) В последнее время слышу много критики этой книги от тех людей которые прочитали её полностью. Судя по отзывам, в начале в книге есть достаточно логичные и полезные мысли, а во второй половине происходит возведение этих практик в абсолют

    • @sky_library_for_novels
      @sky_library_for_novels 5 місяців тому

      Говоря что SOLID нарушает половину того что написано в чистом коде 😮 это правда?

    • @AntonArhipov
      @AntonArhipov 5 місяців тому

      @@sky_library_for_novels не могу подтвердить или опровергнуть

    • @rebrov_vyacheslav
      @rebrov_vyacheslav 5 місяців тому

      @@AntonArhipov без адвоката? )

  • @user-lu8vb1pm9p
    @user-lu8vb1pm9p 5 місяців тому

    На тему безопасности ренейминга: это может быть проблемой, если Вы используете (или вынуждены использовать, ибо до Вас так заведено) автомаппинг.
    В таком случае желательно сделать (если ещё нет) и прогнать тесты маппинга.

  • @redneck_prm5429
    @redneck_prm5429 5 місяців тому +3

    Две главных боли, которые испытываю при раскурке чужого кода - однобуквенные или сокращённые переменные (привет go) и охулиард слоёв абстракций, вызывающих переполнение мозга (привет жабе).

    • @feddos4227
      @feddos4227 5 місяців тому

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

    • @redneck_prm5429
      @redneck_prm5429 5 місяців тому

      @@feddos4227с микросервисами получилось так-же, как с идеей дробить функции, когда отдельные индивидуумы начали делать кашу из однострочных функций.
      вот вроде бы здравая идея - а давайте распилим монолит на несколько сервисов, чтоб за каждый отвечала одна команда.
      а дошли до того, что микросервис на каждый чих, и вместо десяти человек на сервис - десять сервисов на человека. и еще сотня неприкаянных при общем количестве в тыщу.
      и вот уже со всех митапов и конференций понеслось - "а ведь монолит то не так и плохо было, если он не слишком большой"

    • @rebrov_vyacheslav
      @rebrov_vyacheslav 5 місяців тому

      иногда в погоне за уменьшением связности кода мы делаем его бессвязным (

  • @nicolascooler5785
    @nicolascooler5785 5 місяців тому +1

    интересно было бы послушать про code smells!!

  • @LM325R
    @LM325R 5 місяців тому +9

    Роберт Мартин - Чистый код
    +
    Мартин Фаулер - Рефакторинг
    =
    Роберт Фаулер - Рефакторинг чистого кода
    🙃

    • @SerzhNesteruk
      @SerzhNesteruk 5 місяців тому +2

      Чистый рефакторинг 🙃

    • @linuxoidovich
      @linuxoidovich 5 місяців тому +8

      Мартин Мартин - Чистый код: Рефакторинг

    • @woodzimierz9621
      @woodzimierz9621 5 місяців тому +1

      Чисто рефакторинг!

    • @GenaTolstij
      @GenaTolstij 5 місяців тому

      Фаулер Роберт - Чистого кода чистый код .... (голосом боярского: Уу уу ... Уу уу... Чистого кода чистый код... Уу уу... А тут матюк и слово рот.... Уу уу...)

  • @user-sg4iq6pk1s
    @user-sg4iq6pk1s 5 місяців тому

    Відео сподобалось. Тема актуальна. Давай ще.

  • @levmedvedev
    @levmedvedev 5 місяців тому

    Интересно!

  • @Stepanraikevich
    @Stepanraikevich 5 місяців тому +3

    жду видео про code smells!

  • @woodzimierz9621
    @woodzimierz9621 5 місяців тому

    Питання. Наприклад пишемо бухгалтерську задачу для місцевого споживача. Оборотно-сальдова відомість на мові замовника просто "оборотка". Як бути з кодом? Писати транслітом "Oborotka", чи англійською "BalanceSheet"?

  • @woodzimierz9621
    @woodzimierz9621 5 місяців тому

    Сподобалося!

  • @Kudriako
    @Kudriako 5 місяців тому +2

    Мартин и Фаулер это два разных человека, а Чистый Код вообще не человек (с) анекдот

  • @CJSurv
    @CJSurv 5 місяців тому

    На хаскеле тоже отступы важны, правда только в части синтаксических конструкций

  • @CrossRoad7
    @CrossRoad7 4 місяці тому

    Наверное в Cities Skyline 2 очень хорошие программисты, и написали очень хороший код )))

  • @user-rf4yx5qq5r
    @user-rf4yx5qq5r 5 місяців тому

    Встречается однажды программист с хорошим кодом и пользователь с fps ниже пульса в два раза...

  • @Mralex22801
    @Mralex22801 5 місяців тому +3

    У меня есть книга чистый код. Красивая, жёлтая. Всё что я о ней знаю.

    • @Infinity-ua
      @Infinity-ua 5 місяців тому

      аналогично )

    • @sky_library_for_novels
      @sky_library_for_novels 5 місяців тому

      Хочете мені подарувати?😊 Бо напевно монітор який стоїть на ній занадто високо 😂

  • @rufussnowmover8914
    @rufussnowmover8914 4 місяці тому

    НУЖНО ВИДЕО ПРО DRY В НеООП
    Мало материалов про клинкод для неООП-фреймворков и языков, а это значительная часть фронтэнда. Например, мне приходится писать много на Vue, куча похожих компонентов, но не совсем ясно, как избежать дублирования кода. Если бы было наследование, я бы им пользовался, но там нет наследования

  • @user-nv4zv3ik4w
    @user-nv4zv3ik4w 5 місяців тому +2

    Видео про code smells!!!!!

  • @fromillia
    @fromillia 5 місяців тому +6

    Сейчас очень велика вероятность получить оффер на вакансию пушечного мяса

    • @pusika3
      @pusika3 5 місяців тому

      Да блин это грустно пипец, и конца не видно

    • @grigoriykarpenko235
      @grigoriykarpenko235 5 місяців тому

      ???

  • @GenaTolstij
    @GenaTolstij 5 місяців тому +1

    Хороший кот это тот, который мурчит и не ссыт в тапки. Всё остальное это плохой кот. Вот

    • @muggzzzzz
      @muggzzzzz Місяць тому

      А теперь представим себе кота, который мурчит и срёт.
      Мурчит?
      Да.
      Ссыт?
      Нет.
      Значит хороший
      :D

  • @user-bv5zi7dt4r
    @user-bv5zi7dt4r 5 місяців тому +1

    В rust проблему форматирования решили на уровне языка. Команда "cargo fmt" форматирует код в проекте по стандарту разработчиков языка

  • @user-vk9gn5mr3p
    @user-vk9gn5mr3p 5 місяців тому

    Обучить чатгпт тому как пишут код у вас в конторе, а потом прогонять свой код, через эту модель)))

  • @andvolodko
    @andvolodko 5 місяців тому +1

    Code Smells +++

  • @yevhenhrafov228
    @yevhenhrafov228 5 місяців тому

    С перламутр...пуговицами это классика😅

  • @oleg10021989
    @oleg10021989 5 місяців тому

    Да конечно видеоролик классный

  • @geldelian
    @geldelian 4 місяці тому

    17:53

  • @Gazovchik
    @Gazovchik 5 місяців тому +1

    Скромно предположу
    -
    Учиться
    Всем Адекватности мира и добра

  • @slxb7743
    @slxb7743 5 місяців тому

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

    • @taller8624
      @taller8624 5 місяців тому

      Давно пора из идеи и тому подобных вытащить форматеры кода в мавен плагин или в другие сборщики и форматировать в автоматическом режиме при пушах в git.

  • @krivodeling7925
    @krivodeling7925 Місяць тому

    +

  • @solllvent
    @solllvent 5 місяців тому

    Хороший код - за которий платят деньги. То есть, как минимум, он неплох :)

  • @apdgslfhsodbna
    @apdgslfhsodbna 2 місяці тому

    В смысле 500 не показывать 🌚не по-христиански это 😂

  • @alexandergornostaev610
    @alexandergornostaev610 5 місяців тому

    тот день копгда я понял что ненавижу всей душой как пользователь и программист с 20+(комерчиский ессно) стажем "хороший" код. больше я ненавижу развечтрои зеленых и вокнутых.

  • @zefffirka8963
    @zefffirka8963 5 місяців тому

    Шукаю хорошого джава стриптизера для допомоги або чуть гіршого для спільного проекту)

    • @Klerfe
      @Klerfe 5 місяців тому

      Що за проект? І на чому бек пишите?

    • @zefffirka8963
      @zefffirka8963 5 місяців тому

      @@Klerfe нема і нікого і нічого ще

  • @mickle-ak
    @mickle-ak 5 місяців тому

    Reformat только для ИЗМЕНЕННОГО кода, никогда для ВСЕГО файла!
    Вот тогда не будет ни лишних изменений кода, ни, тем более, конфликтов.

  • @NovikovEugene84
    @NovikovEugene84 5 місяців тому

    Ха. Книга уже есть. Так что без меня.

  • @user-zi8zw3yf2t
    @user-zi8zw3yf2t 5 місяців тому

    Это все? Как то мало, слишком очевидные вещи

  • @QwDragon
    @QwDragon 5 місяців тому

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

  • @igorchesnokov482
    @igorchesnokov482 5 місяців тому +1

    Ребят, хорош заниматься всяким кодо-фетишем. Код, который работает и делает то, что надо - хороший, а тот, который не делает - плохой. И нет тут идеала. Практически всегда тот, кто пишет и тот, кто читает, имеют разные модели мышления. И как бы не полировался код, он всегда будет непонятен с разбегу другому программисту. Поэтому, решайте проблемы бизнеса, помогайте зарабатывать ему деньги. Это главное, а не сам код - он вторичен.

  • @nickita.zarubin
    @nickita.zarubin 5 місяців тому +1

    Первый.