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

Поделиться
HTML-код
  • Опубликовано: 27 ноя 2024

Комментарии • 90

  • @SergeyNemchinskiy
    @SergeyNemchinskiy  Месяц назад

    💪Новый поток advanced тренинга Enterprise patterns стартует 2.12 - go.foxminded.ua/48xDdTi

  • @sergeypekar1058
    @sergeypekar1058 10 месяцев назад +67

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

    • @woodzimierz9621
      @woodzimierz9621 10 месяцев назад +6

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

    • @БорисКрасных-ц8н
      @БорисКрасных-ц8н 10 месяцев назад +2

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

    • @sergeypekar1058
      @sergeypekar1058 10 месяцев назад

      @@БорисКрасных-ц8н Тогда PR должен быть соответствующий 😁

    • @sergeypekar1058
      @sergeypekar1058 10 месяцев назад

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

  • @sokolov_sergey
    @sokolov_sergey 10 месяцев назад +37

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

  • @SerzhNesteruk
    @SerzhNesteruk 10 месяцев назад +12

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

  • @p.bakuard8648
    @p.bakuard8648 10 месяцев назад +7

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

    • @QwDragon
      @QwDragon 10 месяцев назад +2

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

  • @Fenixtremo
    @Fenixtremo 10 месяцев назад +3

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

    • @rebrov_vyacheslav
      @rebrov_vyacheslav 10 месяцев назад

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

  • @Максим-т4ю6ъ
    @Максим-т4ю6ъ 10 месяцев назад

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

    • @alexandrapersukova
      @alexandrapersukova 10 месяцев назад

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

  • @AntonArhipov
    @AntonArhipov 10 месяцев назад +3

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

    • @Sky_Lib
      @Sky_Lib 10 месяцев назад

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

    • @AntonArhipov
      @AntonArhipov 10 месяцев назад

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

    • @rebrov_vyacheslav
      @rebrov_vyacheslav 10 месяцев назад

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

  • @feddos4227
    @feddos4227 10 месяцев назад +4

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

  • @aanistratenko
    @aanistratenko 10 месяцев назад +3

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

  • @chugaister7538
    @chugaister7538 10 месяцев назад +3

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

  • @borisisavnin9983
    @borisisavnin9983 10 месяцев назад +2

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

  • @AnastasiiaMorozova-x8y
    @AnastasiiaMorozova-x8y 10 месяцев назад +1

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

    • @alexandrapersukova
      @alexandrapersukova 10 месяцев назад

      Ваш ответ записан, спасибо)

  • @vitaliy0192
    @vitaliy0192 10 месяцев назад +1

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

  • @MichaelKondrashin
    @MichaelKondrashin 10 месяцев назад +2

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

  • @illia4228
    @illia4228 10 месяцев назад

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

  • @torrvic1156
    @torrvic1156 2 месяца назад

    Прекрасное видео! Спасибо Сергей! Жаль, что не сопровождаете кодом, как Tim Corey например, но и на том, что есть спасибо большое!

  • @nicolascooler5785
    @nicolascooler5785 10 месяцев назад +2

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

  • @redneck_prm5429
    @redneck_prm5429 10 месяцев назад +4

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

    • @feddos4227
      @feddos4227 10 месяцев назад

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

    • @redneck_prm5429
      @redneck_prm5429 10 месяцев назад

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

    • @rebrov_vyacheslav
      @rebrov_vyacheslav 10 месяцев назад +1

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

  • @Александр-о5о3й
    @Александр-о5о3й 10 месяцев назад

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

  • @CrossRoad7
    @CrossRoad7 10 месяцев назад

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

  • @GenaTolstij
    @GenaTolstij 10 месяцев назад +2

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

    • @muggzzzzz
      @muggzzzzz 6 месяцев назад

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

  • @StanBo_ua
    @StanBo_ua 10 месяцев назад +10

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

    • @SerzhNesteruk
      @SerzhNesteruk 10 месяцев назад +2

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

    • @linuxoidovich
      @linuxoidovich 10 месяцев назад +8

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

    • @woodzimierz9621
      @woodzimierz9621 10 месяцев назад +1

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

    • @GenaTolstij
      @GenaTolstij 10 месяцев назад

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

  • @Stepanraikevich
    @Stepanraikevich 10 месяцев назад +3

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

  • @Mralex22801
    @Mralex22801 10 месяцев назад +3

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

    • @Infinity-ua
      @Infinity-ua 10 месяцев назад

      аналогично )

    • @Sky_Lib
      @Sky_Lib 10 месяцев назад

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

  • @xvoidee
    @xvoidee 10 месяцев назад +6

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

  • @Kudriako
    @Kudriako 10 месяцев назад +2

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

  • @ЭдуардВанярха
    @ЭдуардВанярха 10 месяцев назад

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

  • @АлександрНевельский-л2з
    @АлександрНевельский-л2з 10 месяцев назад

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

  • @fromillia
    @fromillia 10 месяцев назад +6

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

    • @pusika3
      @pusika3 10 месяцев назад

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

    • @grigoriykarpenko235
      @grigoriykarpenko235 10 месяцев назад

      ???

  • @IliaS-s2e
    @IliaS-s2e 10 месяцев назад

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

  • @Али-Мухаммад-Закарьяев
    @Али-Мухаммад-Закарьяев 10 месяцев назад +2

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

  • @andvolodko
    @andvolodko 10 месяцев назад +1

    Code Smells +++

  • @levmedvedev
    @levmedvedev 10 месяцев назад

    Интересно!

  • @yevhenhrafov228
    @yevhenhrafov228 10 месяцев назад

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

  • @CJSurv
    @CJSurv 10 месяцев назад

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

  • @woodzimierz9621
    @woodzimierz9621 10 месяцев назад

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

  • @rufussnowmover8914
    @rufussnowmover8914 10 месяцев назад

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

    • @MariaEsenina
      @MariaEsenina 5 месяцев назад

      DRY - это тоже троллинг и запросто спотыкается о реальность, либо порождает архитектурное безумие, так как вы будете вынуждены связывать совершенно несвязанные друг с другом сущности.
      Допустим у вас в проекте есть классы: "утка", "корабль", "самолёт" и человек". Корабль и утка плавают и в коде их "плавания" может быть немало общего, далее самолёт и утка летают, также утка умеет ходить на двух ногах как и человек. Удачи вам здесь с DRY в проектировании методов. Либо связывайте классы между собой и тогда утка - у нас сверх существо, которое умеет всё! Clean Code сцуко!

  • @woodzimierz9621
    @woodzimierz9621 10 месяцев назад

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

  • @АлександрКубраков-у2ш
    @АлександрКубраков-у2ш 10 месяцев назад +1

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

    • @olexayko
      @olexayko 10 месяцев назад

      dont care

  • @solllvent
    @solllvent 10 месяцев назад

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

  • @oleg10021989
    @oleg10021989 10 месяцев назад

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

  • @slxb7743
    @slxb7743 10 месяцев назад

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

    • @taller8624
      @taller8624 10 месяцев назад

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

  • @apdgslfhsodbna
    @apdgslfhsodbna 8 месяцев назад

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

  • @QwDragon
    @QwDragon 10 месяцев назад

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

  • @alexandergornostaev610
    @alexandergornostaev610 10 месяцев назад

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

  • @igorchesnokov482
    @igorchesnokov482 10 месяцев назад +1

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

  • @mickle-ak
    @mickle-ak 10 месяцев назад

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

    • @rebrov_vyacheslav
      @rebrov_vyacheslav 10 месяцев назад

      недооцененный коммент

  • @zefffirka8963
    @zefffirka8963 10 месяцев назад

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

    • @Klerfe
      @Klerfe 10 месяцев назад

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

    • @zefffirka8963
      @zefffirka8963 10 месяцев назад

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

  • @MariaEsenina
    @MariaEsenina 5 месяцев назад

    Стив Макконелл - база, Боб Мартин - кринж. Серьёзно, clean code от дяди Боба - это тормозной архитектурный ад, который при всё нисколько не помогает писать код быстрее и понятнее. При этом Стив помимо своего ИМХО изучил какие-то исследования, искренне пытаясь вывести наилучшие практики, Боб: "Миш мне пох*й, я так чувствую!" (с).

  • @geldelian
    @geldelian 10 месяцев назад

    17:53

  • @Gazovchik
    @Gazovchik 10 месяцев назад +1

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

  • @NovikovEugene84
    @NovikovEugene84 10 месяцев назад

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

  • @ДенисСаранин-м1и
    @ДенисСаранин-м1и 10 месяцев назад

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

  • @krivodeling7925
    @krivodeling7925 7 месяцев назад

    +

  • @Dark_Main_Alpha
    @Dark_Main_Alpha 4 месяца назад

    Чистые кода не существует что значит чистые значит не чего

  • @nickita.zarubin
    @nickita.zarubin 10 месяцев назад +1

    Первый.

  • @torrvic1156
    @torrvic1156 2 месяца назад

    Ох и противоречивая тема. С одной стороны, вроде удобно отлавливать баги, когда много кода в одном файле, а не скачет всё по 100 файлам, но с другой это порой выглядит как такая чушь. У меня вот была ситуация, когда код дублировался и создавал баг из-за того, что я на класс навешал функционал, не свойственный ему по названию. И при вызове класса производилось некое действие и после него оно также производилось. Нет в общем волшебной пилюли (или silver bullet по заморски).