Тёмный

Чистый код. №1: Зачем мыть трубочиста? Правильные имена переменных. На основе книги Роберта Мартина 

through the Eyes of a freelancer
Подписаться 2,8 тыс.
Просмотров 4,3 тыс.
50% 1

Опубликовано:

 

29 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 48   
@watelford85
@watelford85 Год назад
Насчёт префиксов для обозначения интерфейсов. Проблема в том, что само существование такого интерфейса выглядит искусственным. То есть он был создан, чтобы код удовлетворял каким-то принципам, или просто для юнит-тестирования. Вообще с интерфейсами возможны две ситуации: 1. Есть интерфейс и несколько возможных реализаций. В таком случае стоит интерфейс назвать естественным именем, а в именах реализаций использовать префиксы, которые опишут эту реализацию. Например, interface Author {} class LocalAuthor implements Author {} class ForeignAuthor implements Author {} 2. Есть интерфейс и одна реализация. Если другую реализацию сложно представить, то в таком случае интерфейс не нужен. Можно использовать класс с естественным именем. Да и в общем, если нет прямой необходимости использовать интерфейсы в проекте, то использование классов в механизме внедрения зависимостей вполне нормальная практика. Исключение - публичные библиотеки или пакеты. Все зависимости в них должны быть на интерфейсы (или абстрактные классы).
@freelancer_eyes
@freelancer_eyes Год назад
Огромное спасибо за разъяснение! Я в общем и целом совершенно согласен. Случай 2 мы, конечно, вообще не рассматриваем. Плодить интерфейсы "чтоб были" - не наш путь. С публичными библиотеками тоже понятно. А что касается инжекта - иногда я всё-таки хочу видеть, что сюда передано именно поведение. То есть, важен не столько объект и его класс со всеми возможными свойствами и поведением, сколько именно поведение, независимо от класса, его имплементирующего. В этом случае имя типа *_SomeInterface_* мне кажется довольно наглядным. Вот почему категоричность Мартина в этом вопросе меня слегка обескураживает. :) Ещё раз спасибо за подробный комментарий.
@fedorovrs
@fedorovrs Год назад
@@freelancer_eyes скорее всего смысл как раз таки в том, что нам должно быть не важно получили мы просто объект или объект, реализующий интерфейс. Коль метод требует интерфейс, то и работаем мы с ним согласно требуемому интерфейсу. Никаких проверок на тип внутри метода быть не должно. Вот и возникает вопрос, а зачем вам видеть, что это поведение, а не объект?
@whyNotCookies
@whyNotCookies Год назад
Классика, когда из мелочей вырастает огромный ком "неподдерживаемого" кода.. Близка мне Ваша философия, получить удовольствие от исправления чего то подобного) Благодарю за видео!
@mamong0
@mamong0 Год назад
Очень интересная тема для видео! Очень хочется, чтоб она была оценена по достоинству количеством просмотров-лайков 😊
@freelancer_eyes
@freelancer_eyes Год назад
Спасибо за поддержку! И судя по лайкам/комментариям/просмотрам - да, тему стоит продолжать. Так и поступим в ближайшее время.
@TheRazorBlood
@TheRazorBlood Год назад
Супер, жду следующий выпуск по книгам
@freelancer_eyes
@freelancer_eyes Год назад
Спасибо за поддержку! Давайте с этой книгой разбёрёмся, там ещё 400 почти страниц осталось, гораздо более сложных. И если зрителям будет нравится - выберем вместе следующую книгу для разбора.
@yaphets7820
@yaphets7820 Год назад
Прелестная подача, импонирует то, что Вы делитесь собственной мотивацией к прочтению книги с нами. В общем и целом, вероятнее всего отложил бы эту книгу в очередной раз подальше, но поскольку мне вот так формально через экран теперь есть с кем "поделиться" впечатлениями, читаю взахлёб. Жду продолжения, очень рад, что алгоритмы ютуба предложили мне Ваш канал.
@freelancer_eyes
@freelancer_eyes Год назад
Огромное спасибо на добром слове! Если моё видео подталкивает к прочтению/перечитыванию книги - - буду считать, что видео снято не зря :)
@markus8354
@markus8354 Год назад
Очень интересный контент! Спасибо вам
@freelancer_eyes
@freelancer_eyes Год назад
Вам спасибо за добрые слова и моральную поддержку!
@ak_kvadrat
@ak_kvadrat Год назад
Ура! Нравится, продолжаем)
@freelancer_eyes
@freelancer_eyes Год назад
Продолжили :)
@valeryv3194
@valeryv3194 Год назад
"Repetitio est mater studiorum" - повторение - мать учения. Иногда полезно вспомнить основные моменты. Спасибо за видео и жду пролжения "чистого кода".
@freelancer_eyes
@freelancer_eyes Год назад
Ура! Рад, что вы поддержали идею. Будем продолжать, значит.
@darknet106
@darknet106 Год назад
Приветствую! Пару лет назад читал данную книгу, просто великолепная книга!А у вас просто талант учить!
@freelancer_eyes
@freelancer_eyes Год назад
Спасибо на добром слове! Рад, если мои монологи не кажутся нудными 😀
@deenkag3152
@deenkag3152 Год назад
Спасибо за видео.
@freelancer_eyes
@freelancer_eyes Год назад
Вам спасибо за внимание и поддержку!
@NuChamu
@NuChamu Год назад
Хороший канал от сеньера. Сам 10 лет в разработке. Интересно посмотреть
@VorobyevAlexander
@VorobyevAlexander Год назад
По поводу add и uppend тут еще один момент, в готовых решениях, если не ошибаюсь, чаще используется именно add. (например в коллекцию). И новому разработчику в команде оно может быть понятнее. Я в своем проекте использую uppend когда имеет значение добавляю именно в конец, и это важно с точки зрения бизнес -логики. И есть соответственно метод prepend
@freelancer_eyes
@freelancer_eyes Год назад
Интересный подход. Почему нет? Главное ведь, чтобы была выбрана какая-то логика, и чтобы эта логика соблюдалась сквозным манером по всему коду.
@NuChamu
@NuChamu Год назад
Отличное видео
@freelancer_eyes
@freelancer_eyes Год назад
Спасибо на добром слове! Огромное спасибо за такой внимательный просмотр и подробные комментарии!
@ВладимирЮрченко-б5з
Про числовые константы. Если в коде в чистом виде есть числа, то, по-моему, это называется магические числа.
@freelancer_eyes
@freelancer_eyes Год назад
Я никогда не встречал такого определения. Надо посмотреть, интересно!
@ВладимирЮрченко-б5з
@@freelancer_eyes а я думал что его Мартин ввёл. Погуглил, их действительно так называют, но кто это понятие ввел не нашел.
@NuChamu
@NuChamu Год назад
Про однобуквенные переменные, это тоже пережиток старых технологий. Когда экономили на спичках. Мол не используйте длинные переменные, можно сэкономить 1 секунду на генерации страницы в php). Я не говорю про минификации.
@darknet106
@darknet106 Год назад
А где вы описываете бизнес логику в ларавеле? В сервисном слое? Так как там используется актив рекорд для базы а не дата маппер
@ЯковЛазоренко
@ЯковЛазоренко Год назад
Обычно в моем случае PHP разработки заказчик просит сделать как можно быстрее MVP-версию продукта, а чистота кода ему не нужна. Про SOLID и паттерны вообще молчу. Но это наверно потому что заказчики относительно бедные.
@freelancer_eyes
@freelancer_eyes Год назад
В том-то и дело, что тяп-ляп MVP довольно сложно привести в чувство, если проект потребует развития. Но это случается не так часто, поэтому создается MVP просто как proof of concept, а потом он хоронится за ненадобностью. При таком подходе конечно не до SOLID: деньги на ветер
@arta4649
@arta4649 Год назад
"грязный код"- лучшая обфускация😆
@freelancer_eyes
@freelancer_eyes Год назад
Я бы даже сказал - единственно возможная :) Или я не прав?
@arta4649
@arta4649 Год назад
@@freelancer_eyes все верно!:) Благодаря Вашим видео, надеюсь перестать быть тем обфускатором🤣
@NuChamu
@NuChamu Год назад
Про интерфейс тоже согласен. Но скорее всего он имеет в виду, что "а непонятно же, что ты передаешь". Например ModelInterface. User или Book? А может Session? А может пустую модель, некое наследие абстракции и все спокойно провалидируется конструктором. В его мыслях есть идея правильная, но на практике неприменима во МНОГИХ случаях. Я про передачу в конструктор, в вашем случае.
@freelancer_eyes
@freelancer_eyes Год назад
Если интерфейсы построены грамотно, то они содержат объявление поведения (и правильно поименованы). И тогда мешанины не получится. В идеальном мире 😄
@NuChamu
@NuChamu Год назад
Retrive- извлечь из сторонних неких непонятных данных. Так именую. Причем retrive и get это разные вещи. После retrive обвертка гет над уже полученными данными. Extract когда данные в другом формате. Может я не прав
@freelancer_eyes
@freelancer_eyes Год назад
Да почему же не правы? По мне звучит вполне логично.
@NuChamu
@NuChamu Год назад
Как по мне, плохой пример сделали. $orderCount> AnyConstants::constant.. Должна быть абстракция $orderCount>GetMyVariavles::getAnyValue(AnyConstants::constant) . тому что сегодня из константы, а завтра база и опять же нужно менять. Но если честно, то >100 иногда тоже работает и тоже грешу)
@freelancer_eyes
@freelancer_eyes Год назад
Ну, это не самый страшный грех. Главное, чтобы не приходилось потом искать это в коде с целью изменить в нескольких местах сразу :)
@NuChamu
@NuChamu Год назад
Когда заказчик не понимает за что 40 часов, а не 8... Рефакторинг дело такое...
@freelancer_eyes
@freelancer_eyes Год назад
Ага. Не столько с кодом борешься, сколько с заказчиком 😅
@AlexeyButochnikov
@AlexeyButochnikov Год назад
Видео в тему ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-dfgtKb-VpRk.html
@freelancer_eyes
@freelancer_eyes Год назад
Классное видео, отличный докладчик! Здорово, когда люди думают о коде в таком ключе, в таких деталях!
@Ntap13
@Ntap13 Год назад
Правильные имена переменных - это такие имена, которые несут в себе смысл того, что в них хранится. Всё! Как можно было тему "как назвать переменную" растянуть на 50 минут? Уму не постижимо. Причем тут трубочисты? Причем тут Ваше нынешнее рабочее место? Причем тут дома с разбитыми окнами? Что еще за "звучащий" код. Вода водяная. Бизнесу главное, чтобы задача была выполнена быстро и по ТЗ. Вообще плевать что там в коде. Если по пол часа размышлять о том как бы переменную получше назвать, то ни в какие дедлайны никогда не уложишься и будет не "проект с ужасным кодом", а просто - ничего не будет. Потому что такая долго выполняющаяся работа никому не нужна и проект просто развалится. Ну а если функция на пару сотен строк вызывает у кого-то ужас, то, скорее всего, этот человек и не программист вообще. В любой нормальной компании есть код-стайл и строгое ревью - там все неточности названий в переменных просто вынудят поправить Кому интересна тема - почитайте книгу и составьте свое личное мнение (на раздел с названиями переменных как раз 50 минут хватит). Остальным же не советую тратить время и рекомендую обойтись прочтением первой строки моего комментария
@_slash_-
@_slash_- Год назад
"Совершенный код" и "Чистый код" являются самыми популярными книгами.Странно, почему бы это тогда?
@dmitryalinsky5911
@dmitryalinsky5911 Год назад
Ох не хотел бы я с такими, как вы, сталкиваться в работе. Автор несколько раз повторил, что не претендует на истину и что эта серия роликов не заменит книгу. Хотя я предположу, откуда у вас такая реакция. Слишком часто сталкивались с людьми, которые много говорят и мало делают, либо старпёрство высшего уровня. А ваша претензия по поводу 50 минут только на название переменной не имеет веса. В ролике рассказывается далеко не только про это. Тут самая настоящая каша из топора. P..S. Желаю как можно больше функций с сотнями строк кода, чтобы ваше самомнение не падало ;)
Далее
Nightmare | Update 0.31.0 Trailer | Standoff 2
01:14
Просмотров 686 тыс.
Rate our flexibility 1-10🔥👯‍♀️😈💖
00:12
Goodbye, Gitflow! Hello, Trunk-based development!
52:38
Nightmare | Update 0.31.0 Trailer | Standoff 2
01:14
Просмотров 686 тыс.