Как называть переменные, методы и классы? Чистый код (Clean Code)
Сегодня мы с вами начинаем новую серию видео по CLEAN CODE Роберта Мартина.
В этом видео поговорим о том как правильно называть переменные, методы и классы.
Курс о котором идет речь в видео: SALESFORCE Developer - bit.ly/38r1u0n
Тайминг:
00:00 - вступление Сергея Немчинского
00:31 - обучение Salesforce в Foxminded
01:30 - почему важно правильно называть переменные, методы и классы?
03:10 - названия переменных должны нести смысл
05:50 - не обманывайте
09:05 - произносимые названия
11:21 - поиск по названиям
12:25 - не кодируйте
13:45 - не надо демонстрировать свой ум
14:50 - существительные - классы, методы - глаголы
16:18 - не будьте милым
17:08 - одна вещь - одно название
19:51 - включайте названия в контекст
21:01 - не используйте лишнего контекста
Курсы для новичков:
JAVA - bit.ly/3bBv7hf
JAVA Start - bit.ly/3tnHkMX
PYTHON - bit.ly/30CZYDO
C# START - bit.ly/30z8nbx
C#/.NET - bit.ly/3l7bX68
Инструментарий JAVA - bit.ly/3vokpmv
Automation QA (Java) - bit.ly/3rFtyVp
ANDROID - bit.ly/30z1uad
FRONT-END - bit.ly/2OEtjex
WORDPRESS Developer - bit.ly/3vaSEh7
UI/UX дизайн - bit.ly/3bCx11h
GAME DEVELOPMENT - bit.ly/2PU1akm
Обучение на проекте - bit.ly/38uyNQf
Продвинутые курсы для состоявшихся девелоперов:
GRASP and GoF Design patterns - bit.ly/3qBhYcA
Enterprise patterns - bit.ly/30BxDOh
Другие услуги:
Пробное собеседование - bit.ly/3etTmzW
Карьерная консультация - bit.ly/30yGMqT
Сайт Foxminded: bit.ly/2OgwvNM
Foxminded в ФБ: / foxmindedco
FoxmindEd в Instagram: / foxminded.ua
Foxminded в VK: foxminded
Мой Telegram: t.me/nemchinskiyOnBusiness
Для деловых запросов: youtube@foxminded.com.ua
Пікірлер: 252
Супер! Было бы круто если бы были примеры кода. правильно неправильно для лучшего понимания) спасибо!
@user-kn8nl4lv5y
2 жыл бұрын
@Ivan Petrov а есть такой? Именно в записи и по улучшению кода?
@user-kn8nl4lv5y
2 жыл бұрын
@Ivan Petrov ну они проводят обучение, насколько я знаю, а не продают курсы в записи. Такой вариант не подходит. А за graps спасибо. Посмотрю что это за книга.
@user-ey8ff2gd9p
Жыл бұрын
Так он же приводил примеры
Ну вот не надо, что никто не смотрит 2-часовое видео по Clean Code - я буквально сегодня смотрел)
@doopath8737
3 жыл бұрын
Та серия видео по паттернам ГоФ и ГРАСП настолько хороша, что я смотрел ее больше 3-х раз, заставил посмотреть всех моих родных и друзей, планирую показывать ее своим детям. Спасибо Сергею за такие прекрасные уроки!
@rumartru
3 жыл бұрын
Спасибо, надо посмотреть, главное чтобы мозги не закипели к концу, чтобы хоть что-нибудь запомнить)
@user-rl1hs3jf7l
3 жыл бұрын
Скиньте ссылку на 2-х часовое видео
@user-us5uf9tt8i
3 жыл бұрын
Сергей, стату по просмотру того видео в студию! пипл негодуэ!😀
@hallgamal6302
2 жыл бұрын
Если видио 2 часа я его смотреть не буду Если инструкция длиннее страницы читать не буду Тот кто делает такие длинные вещи наверное считает себя сильно умным
Заказчик называет какой-то компонент "эта ху%ня". Придётся называть так класс.
@user-us5uf9tt8i
3 жыл бұрын
во во! заказчик: хочу чтоб этот йопаный перечень услуг.. я(пишу): fuckingEnumераторсервисесблеать...... 😎
@user-ip6ob6dl7j
2 жыл бұрын
Блядь це лол
16:30 - движуха вокруг master/slave вспомнилась сразу
Никто уже не сомневается, что это Сергей Немчинский? 😃 Очень классная идея для серии, спасибо Вам! И да, серию коротких видео смотреть в разы проще, чем одно большое, чисто психологически информация укладывается лучше.
@phantomlannister1104
3 жыл бұрын
Ну и обложка видео огонь, сразу бросилось в глаза в релэйтеде.
@alexxEquinox
3 жыл бұрын
Phantom LANNISTER Плюс можно более детально углубиться в каждый аспект. Это лучше чем пробежаться по верхам в одном большом энциклопедическом видео. Такие короткие более детальные выпуски лучше во всех смыслах.
Когда Немчинский с укоризной посмотрел в экран, мне показалось, что это я был тем, кто назвал метод init. Стыдно стало.
Смотреть короткие ролики действительно проще чем длинную лекцию(да и закрепить материал проще). Жду продолжения
Здорово! Очень жду следующие видео ❤️
как раз недавно прочитал по рекомендации одного из преподавателей. Отличная книга. А сейчас ещё и видео от Вас с пояснениями, просто пушка-гонка:)
Интересно всё!) Продолжайте в этом же духе, Сергей. Однозначно лайк и колокольчик))
Сергей, спасибо большое за новую рубрику! Очень интересно и познавательно:)
Спасибо большое за такие видео. Всегда не хватало терпения смотреть ваши длинные лекции про клинкод. Так что приходилось искать в интернете коротко обо всем. А этот формат очень правильный и мне нравится
Спасибо, очень интересно, жду продолжения
Спасибо Сергей. Очень просто и очень продуктивно.
Здравствуйте, Сергей Немчинский, спасибо Вам за вашу работу! Я смотрел уже некоторые другие ваши видео и нахожу их и это видео весьма полезным! Удачи Вам в Ваших проектах!!!
Только прочитал Clean Code, и вы сразу выпустили ролик про него)
Сергей, большое Вам спасибо за ваши видео! Очень много о мире программирования узнал именно от Вас. С ностальгией вспоминаю, как на машине ехали с папой (когда он был жив) на работу и слушали ваши видео.
Спасибо Сергей. Разумно короткие сжатые ролики легче усваиваются. 2 часа не всегда есть время просмотреть и осмыслить.
Спасибо за полезную информацию. Как раз то, что я искал.
Сразу ставлю лайк) В разработке не первый день, но бывает в проектах очень сложно имена дать сущностям.
@0imax
3 жыл бұрын
Особенно когда есть несколько похожих сущностей, и различия между ними надо бы отразить в названии, но получается длиннющая хрень)
Продолжай дальше про клин код. Очень актуально)
@maxlich9139
3 жыл бұрын
клин клином вышибать)
как всегда интересно слушать.... лайк 👍
Круто! Жду продолжения....
Очень интересно, так держать, спасибо огромное
Супер, отлично! Пожелание только одно - максимально полно раскрыть эту тему.
@SergeyNemchinskiy
3 жыл бұрын
стараюсь :)
Чистый код Мартина - одна из самых полезных книг о программировании. И при этом достаточно легко читается. Неоднократно видел, как код людей заметно меняется в лучшую сторону после прочтения этой книги. По содержанию ролика - не хватает одной важной вещи. Не помню было это у Мартина или нет, возможно вывел это правило сам - относитесь к названиям как к терминам. Это значит, что одна и та же сущность в проекте везде должна называться одинаково. При этом разные сущности - по-разному. Общие и неоднозначные термины использовать не нужно - manager, game в игровом проекте, proxy если пишете проски-сервер и т.д.
@enkryp
3 жыл бұрын
А вот это про что было? 17:08 - одна вещь - одно название
@cnTrueLight
3 жыл бұрын
@@enkryp Возможно и имелось в виду то же самое, но выражено не достаточно чётко. Правила использования терминов относятся не только к тому, что говорит заказчик, а вообще ко всем сущностям в коде.
Я пару месяцев назад начинал её читать. Добрался до функций и потом отложил её. Так что я за последующие видосы! Если уж не читаю, то хоть послушаю)
Отличная идея - разбить на "разделы". Кстати, с кодом весело разбираться, когда писавший его не знал английского (знал французкий) и не использовал словарь для проверки: messege, baze, resive и прочее
Кайф формат! Всё ещё отличный канал) На работе учит тимлид, по дороге Сергей. =)
Отличное видео. Не знала что переменные должны быть существительными, а методы глаголами 😬 я ещё только учусь.
Спасибо. Читал много книг Мартина и других, повторение полезно.
Спасибо за видеоролик
Очень интересно, очень полезно
Тема очень актуальная. Го еще)
Спасибо за годный и полезный контент. Все супер. В этом плане, к примеру в SAP ERP на ABAP печалька. Длинна названий объектов (классов/методов/переменных и пр.) ограничена. Кроме того, у многих заказчиков в регламентах префиксы, чуть ли не основное требование. К примеру для класса префикс может быть таким: Z(пользовательская область имен)CL(префикс класса)NN(модуль)_NNNN(номер разработки)_. И выглядит это примерно так: ZCL_HR_D501_*. Т.е. 12 знаков только по регламенту.
Супер. Спасибо!
Хороший видос, спасибо
Это видео обязательно к просмотру любому, кто входит в программирование
Спасибо большое за поддержку и понимание ❤️🔥❤️🔥❤️🔥
Как enterprise разработчики называют своих собак? WoofServiceHelperManager
Наконец, годнота
Спасибище огромное!
Шикарное видео, спасибо. А ещё улыбнул значок орды на футболке в рекламе))))
Спасибо большое:)
Как раз у меня скоро семинар по книге Чистый Код )
Большое Спасибо
11:01 Получилось даже лучше, чем вся "модная" музыка
как раз пишу задание по clean code из курса java spring. соответственно, дальше про декомпозицию на пальцах хотелось бы)
Thanks, it was interesting
Продолжайте по теме clean code
Спасибо!
Послушал и сразу же исправил название класса, ответственного за навигацию, с глагола на существительное.. ))
По Swift'у Эппл рекомендуют совсем длинные названия (eg. var enterUserFirstName, func clickToSubmitLoginForm, class vehiclesInEuropeanUnion). Позже привыкаешь и читаешь как цельное предложение (на самом деле просто привыкаешь). Удобно. Постепенно сокращаешь до самых нужных ключевых слов кэмэлКейсом и крутяк (eg. var userFirstName, func clickToSubmit, class vehiclesInEurope).
++ Годно, полезно.
У меня был недавно выбор: или разбираться, почему исходники с гитхаба на TypeScript не компилятся или расковырять и переделать минифицированный код готового приложения. Второй вариант оказался проще :).
дякую за відео, адже зараз (при відсутності достатнього досвіду) дійсно складно з назвами на всіх рівнях, але "батя, я стараюсь")
Про "не используй сокращения" и "не используй лишний контекст". Я программирую на С и там если ты не назовёшь свой тип PWM_HeaderTypeDef (что нарушает оба этих правила), то попытка глобально использовать твой тип в большом проекте вызовет кучу вопросов у того, кто будет потом читать код. А что делает этот тип? Для чего он? И так далее.
Здесь как и в остальных областях общественных отношений. Если думать об удобстве других людей, а не только о своём, то эти рекомендации будут почти очевидны. Все мы - человеки.)
То чувство когда назвал класс ИндексКонтроллер А как вы относитесь к стандартным сокращениям типа tmp
Интересно! Построим стайл гайд команды на основе видео)
@SergeyNemchinskiy
3 жыл бұрын
супер, такова была идея :)
Как хорошо что в пайтоне есть встроенный мощный докстринг. Конечно, нужно писать так что бы всем было понятно из названия что оно делает... Но в докстринг можно и пример запихнуть. Ну и везде где можно проставлять анатации (аля типизация языка). Тогда не нужно делать проверку типа входящих данных. Да и IDE подсветит что функция ожидает, и что вы на выходе получите.
Придумывать название переменных это целое искусство
Кайф!
Хотелось бы видео о том, когда лучше применять mvc, а когда mvt
Спасибо
@Sergey Nemchinskiy А как правильно называть классы в паттерне команда? DoSomething, как я понял, не годится, а DoSomethingAction норм?
@jewgenijmoldawski3306
3 жыл бұрын
А почему бы не просто something?
@bagzhansadvakassov1093
2 жыл бұрын
SendData? ExecuteShell?
спасибо
Хотел поставить лайк, а он уже стоял
Роберт Мартин в помощь)
Книгу читал и то двухчасовое видео смотрел. Но все равно видео было полезно, так как узнал почему же медведя зовут медведь
По поводу "не кодируйте" 12:25 А что скажете про использование переменных i18n, l10n и g11n?
@enkryp
3 жыл бұрын
Это устоявшиеся сокращения, которых единицы. "Не кодируйте" - про частое использование в коде импровизированных замен и сокращений.
@maksk5017
3 жыл бұрын
А что все это значит? :)
@vm_raccoon
3 жыл бұрын
@@maksk5017 i18n - интернационализация. l10n - локализация. g11n - глобализация.
@maksk5017
3 жыл бұрын
@@vm_raccoon Воу, я не знал, спасибо, но я думаю это не лучшая идея для наименования.
Где же знаменитое 2-хчасовое видео? Столько раз на него ссылались.
В нумерации пропущена 9, 17:08 - одна вещь - одно название (8) 19:51 - включайте названия в контекст (10)
Сергей, сделайте, пожалуйста, видео (или серию видео) о том, какие продукты сделаны украинскими айтишниками для Украины. Да, я прекрасно понимаю, что в основном все идет для американских и европейских компаний, там платят больше и т.п. Тем не менее, у нас столько талантливых программистов, что не может не быть своего чего-то классного, мирового уровня. Очень бы хотелось показать дочери, а то пока у нее в голове только выучиться здесь и уехать
11:58 на фоне уже везут программиста, который пришел в команду где так делают.
Ok!
З тезою про закінчення '-er' не згоден. Це вже надмірний пуризм. class User ще нікому ніколи не зашкодив, а перейменовування Adapter чи Wrapper у щось інше лише зменшить читабельність коду.
Может смысл начинать названия классов на Server в том, чтобы выскакивал список подсказок при начале набора? Иначе нужно всегда помнить названия классов, по крайней мере их начало.
Лайк за Сильвану)
заказал Мартина Чистый код
А можно узнать как правильно рефакторить?
Здравствуйте, Сергей. В связи с последними новостями об суверенном интернете, можете, пожалуйста, сделать на сайте пакет оффлайн уроков, которые можно будет изучать без интернета?
@SergeyNemchinskiy
3 жыл бұрын
это вам не поможет, мы в Украине :)
Префиксы в названиях классов, вероятно, лепят, когда пишут код без неймспейсов.
А можна ссылку на 2 часовое видео ?
Как называть? Так, чтобы никто не догадался!
@max_mgtow
3 жыл бұрын
Чётко 😆
Пользу от этого видео сложно переоценить
Очень полезная информация. Пойду свои краказябы менять. Только вот вопрос возник... Насколько длинные названия методов, классов допускается..
@SergeyNemchinskiy
3 жыл бұрын
я считаю, что не более че 3 слова
Можно было бы 2 лайка поставить, я бы поставил)
Всё ещё Сергей Немчинский 😄
Давно не смотрел видео с Сергеем. Не узнал его. Сергей, что с твоей внешностью? Ты помолодел!
@SergeyNemchinskiy
3 жыл бұрын
усы сбрил :)
Слушаю видос, дописывая класс PacketBuilder))
@infinitynoir5441
3 жыл бұрын
Вот хоть убей, не вижу ничего плохого в этом названии. Мне даже со своей колокольни уже примерно понятно, что там внутри. Плюс я почитал комменты под двухчасовым видосом и там есть такие же мнения на этот счёт. Имхо слепо следовать правилам тоже плохо. Может мне конечно недостаточно опыта, но можно назвать класс очевидно, в виде того же PacketBuilder'a, а можно придумать какую-нибудь дрисню, которая только запутает окончательно
@0imax
3 жыл бұрын
@@infinitynoir5441 Ну я ничего лучше не придумал для класса, который из данных формирует пакет для отправки (добавляет служебную инфу к данным) и из принятой побайтово инфы формирует пакет, проверяет его корректность и отдаёт данные из него. Ну и кода там 100 строчек, всё банально.
private int i; public int i1; public int peremennaya_dlya_metoda_pereopred 🌚
@purplep3466
3 жыл бұрын
var zashkvar = 1.0;
@Proto_Astartes
3 жыл бұрын
Как бы это парадоксально не звучало, но третья переменная самая понятная(Ясно для чего она нужна), а первые две реально BullShit. У нас в проекте есть классы в которых сотни методов и 15 тыс строк кода и поверь пусть имя будет длиным чем коротким и хз что и в каком контексте оно используется, овер дохера ошибок из-за путаницы контекста смысла переменных.
@user-us5uf9tt8i
3 жыл бұрын
@@Proto_Astartes имхо: если у вас в классе СОТНИ методов,... че то не то вы делаете...
@Proto_Astartes
3 жыл бұрын
@@user-us5uf9tt8i если проект уровня андроид приложения , то я с вами согласен, но т.к. у нас проект уровня ентерпрайз и несколько десятков клиентов обслуживает наш проект и у каждого своя специализация , то часть методов используется для одного клиента часть для другого.
@drovoseg
3 жыл бұрын
@@Proto_Astartes Судя по описанию их стоит разнести на разные классы
Спасибо за видео. Анас заранее приучают писать переменные какими-то ничего незначащими буквоцифрами. Или особый шик это название переменной на пару десятков стволов из 4-5 составных слов.
Мое самое нелюбимое слово из области бухгалтерии, которое непонятно как перевести для нейминга - "ведомость". Есть и другие слова: отработки, начисления, ... Придумывание названий для таких вещей иногда бывает сложнее написания самой логики.
@user-nu2jz1sb4s
2 жыл бұрын
А когда "лещадность" (одна из характеристик щебня) в предметной области. И заказчик русскоязычный. Во я запарился тогда перевод искать :)))
нужно больше примеров, а то иногда есть 1, а иногда даже 1 нет
@maitreeee
3 жыл бұрын
В clean code достаточно примеров
Глаголы вообще нельзя использовать для наименования классов? А если они будут вместе с существительными, например, UpdateOrderInCache или DatabaseQueryBuilder?
Ролик надо было назвать 10 способов вывести сеньора из себя если ты Джун
Так а в чем проблема с классами контролл-ерами, рид-ерами и менедж-ерами? Как их называть рекомендуется?
@maxlich9139
3 жыл бұрын
вот реально. Если класс не содержит состояние или почти не содержит, и только что-то делает, то как его еще называть!?
Недавно видел объект с методами типо a aa a1 AA
Здравствуйте. Вопрос и к Сергею и к аудитории) Спросил бы на стриме за донат, но не знаю когда у вас стримы(( Из всех направлений мне очень хотелось бы работать в геймдеве. Ну вот прям тянет туда. Но некоторые люди меня осадили тем, что в геймдеве нужны крепкие знания математики и что геймдев = жизнь на работе. На сколько это все правдиво? Особенно про математику. Я сам по себе не глупый, но пугает перспектива, что помимо с++ нужно еще проходить курс по дискретной и высшей математики
@TetyanaAlymova
3 жыл бұрын
стримы выходят регулярно каждую неделю в четверг ;)
@SergeyNemchinskiy
3 жыл бұрын
в 15 часов по Киеву (16 по Москве в зимнее врем)