Как писать чистый код
HTML-код
- Опубликовано: 17 май 2024
- Узнать о Java Bootcamp: www.faang.school/?...
В этом ролике я хотел бы поделиться с вами некоторыми правилами, которым я стараюсь следовать, чтобы писать действительно чистый код.
Буду рад ответить на любые вопросы насчет обучения или карьеры, дать некоторые советы. Пишите!
00:00:00 - Приветствие
00:00:33 - Книжка
00:01:14 - Java Conventions
00:08:31 - Имена
00:13:02 - Методы: организация
00:15:00 - Методы: правила работы
00:19:51 - Комменты
00:22:21 - Исключения
00:24:55 - Заключение
Обучение:
Java Буткемп: www.faang.school/?...
Курс "Алгоритмы с нуля": www.faang.school/algorithms-f...
Курс "Подготовка к собеседованию в IT": www.faang.school/product-inte...
Java Magics. Бесплатный курс для начинающих: www.faang.school/java-magics?...
Социальные сети:
Instagram: / faang.school
LinkedIn: / vlad-mishustin
ВК: faang.school
ТГ-канал "Road to FAANG": t.me/fakng_eng
ДИСКЛЕЙМЕР
Любая информация, высказанная в данном видео является моим личным мнением и никак не относится и не отражает позиции моего работодателя или любых связанных со мной организаций.
Любой код, документация, логи или диаграммы, показанные в видео, являются моими личными макетами, написанными/созданными в мое свободное время на своей собственной машине, конкретно для демонстрации в роликах, никак не относясь и не используя интеллектуальную собственность моего работодателя или любых связанных со мной организаций.
Буду ждать ревью от Влада Тена
ну, тут ни придирешься уже, общеизвестные конвенции
Все фишки взял с ChatGPT
когда накал страстей перейдет на новый уровень, надо будет сделать батл по leetcode. Кто-то из них окажется Оксимироном а кто-то останется Джонни Боем. Вместо Ресторатора будет Lex АйтиБорода или предлагайте ваши варианты!
@@naviodinson Ильин
@@meritocratik если брать непредвзятого, то S0ER
Лол, я писал в телеге админам что если вы продолжите банить хейтеров и чистить комментарии, то по сути подпишитесь под сказанным Владом. В итоге решили почистить вообще всё и закрыли комменты. Geniuses
так мошеники всегда так дделают, жалко что найдутсяя те кто у него купит обучение((((
За_клинкод_пояснятор новая ачивка -нужно срочно добавить в презентацию цыганского курса
Надо сделать курс, как уничтожить свою репутацию за 21 день :) цену вы знаете
Купил курс за 300к, взял в аренду пару кладовок. Буду там сейчас печатать сертификаты на массаж, думаю дело пойдет
Видос платный? куда 300 тыщ переводить?
Пожалуй лучше программирования Владик может похвастаться искусством повествования успеха, мировых целей, правильной жизни и прочего, без чего его удивительный курс не будет продаваться
Кто от Влада Тена?!
Влад - отлично! Ты очень сильный специалист!
Большое спасибо! Всегда приятно и полезно посмотреть! :)
имя класса с большой буквы! вау! вот это фаанг уровень! возьми мои 300к срочно!
В самом начале видео 1:30 неправильно назвал стиль написания кода
camelCase
PascalCase
Классы - всегда PascalCase
Новая Блиновская в деле
А че в телеге комменты закрыты?
Класс, теперь захотелось что-нибудь написать, спасибо
Не думаю что автор видео действительно опытный разработчик, тут по сути под чистую пересказ книжонки (кстати не самой лучшей) а в процессе работы появляется куча своих по настоящему помогающих способов организации кода, оставляйте плюс под моим комментом и я сам запишу ролик где поделюсь своим опытом и расскажу как стоит мыслить при написании кода, как определить рамки которые не будут позволять вам писать лапшу и как в целом проектировать фичи таким образом что-бы после реализации не рефакторить их от нескольких часов до суток, а не 20+ минут рассказывать про простейшие конвенции которые даже ПМ знают =))
+
+
+
Автор данного ролика попал в первый выпуск Влада Тена о инфоцыганах, так что вы верно подметили по поводу уровня данного "учителя"
+
Найс инфопродукт бро 🤝
Посмотрите прожарку курсов Мишустина от Влад Тен )))
Как я понял весь этот канал был создан для продажи курсов …
Когда будет битва 2 Владов ?
Балдежная музыка) Я как будто в "Как достать соседа" играю
Я уже было обрадовался, думал "кайф, неужели код от Влада посмотрим, да еще и по клин коду. Даже интересно, что еще про него рассказать можно. Но раз Влад видос запилил - должно быть годно же..". Я и вкуснях набрал под просмотр и на выходные видосик отложил... А тут "не бросайте коды ошибок - рейзите ексепшены...", "давайте исключениям понятные и корректные имена..", "форматируйте код, смотрите тут 3 кнопки есть". Что это вообще, ахахахах? Я рили думал он рофлит.
Реквестирую видос по установке IntelliJ IDEA на компудахтер.
да он пересказал книжку и то не правильно))))
Нормально так тебя прожарили, четко
А теперь серьёзный вопрос: зачем новичку смотреть этот ролик, если Кэти Сиерра и Бёрт Бейтс ещё в 2003 году рассказали про это в "Head First Java" более детально, подробно, и понятно? Я уже не говорю про "Clean Code" Роберта Мартина.
Автор ролика пересказывает материал одной из этих книжек, но даёт этот материал в слишком сжатом и скомканном формате. Без негатива, это просто факты.
Потому что они книги не читают, а вместо этого смотрят видосы. Пусть хоть так просвещаются.
Потому, что он инфоциган -- берёт уже готовые вещи и пересказывает их так, будто бы это его мысли.
@@ArthurMudrick +++ а это заметно по его манере пересказа и как он показывает
Влад, привет, а ты в канале в телеграмме отключил комменты ? А то интересно почитать разные мнения, а комментов нет(
"Чистый код" - Роберт Мартин. Весь видос - краткое содержание книги. XD.
Это база
так он же сказал что видео основан на этой книге)
Это не так) Ведь он сказал про видео и книгу на 0:53 , что он "собрал выжимку из самых главных принципов описанных в этой книжке", а не то, что он всю книгу сюда засунул.
Влад, как на счет ревю книги Егора Бугаенко "Elegant Objects"?
Смотрю канал уже давненько и обычно согласен с автором, но про "разбивать методы на части так, чтобы они занимали не больше 7-8 строк" - это, простите, одна из САМЫХ глупых вещей которые я слышал в своей кодерской жизни )) Мне кажется любому очевидно что это только увеличит количество кода + значительно ухудшит его читаемость. И почему не 5 и не 10, не 2 или 20 строк )) И даже если где-то такой специфичный подход и применяется и по какой-то причине делает результат лучше, то он уж точно не подойдет для большинства. Я бы такого разраба, который разбивает цельные осмысленные методы на мелкие куски только ради соблюдения правила "7-8 строк", уволил бы в первый день.
пс: написал не холивара ради, но для всех тех, кто посмотрел этот отрывок и начал сомневаться в своей адекватности ) Нет ребят, с вами все хорошо, можете писать и 10 и 100 строк в методе, если он выполняет четкую обособленную задачу и логически не требует разбиения. пис ✌
Простите, но нет, метод на 100 строчек это не окей, такой метод уж лучше разбить на 2-3 метода
@@bloga5566 ну 100 может и стоит, но явно не по 7 строк ) И то далеко не всегда. В том то и дело, что все зависит о конкретной ситуации и цели, такие вещи не могут и не должны преподноситься как догма, это только ухудшит качество кода. В чем суть любого метода? Производить некое действие. Если действие атомарное и ни с чем другим не связано, получает А на вход и отдает Б на выход, логически разделения не требует и тд - то какая разница сколько в нем строк, это к делу ВООБЩЕ никакого отношения не имеет =)
@@yalmeme Как правило, если метод 100 строчек кода, действие вообще не атомарное и его можно разделить хотя бы на два метода, это уже лучше будет восприниматься, легче будет понять, что происходит вообще, так что методы по 100 строчек кода, это плохо, но я не спорю, методы по 7 строчек еще хуже
про 100 строк орнул. Но да, какой-то лимит на конкретное колличество строк в методе - кринж. Да, он должен быть максимально коротким но выполнять свою единственную обязанность
Спасибо
Любимый задрот ❤
А как так случилось ,что из простого парнише с большими целями. Ты стал инфоцыганом 😢😢 Чувак вроде неплохо начал и говорил что якобы на канале нет рекламы 😅
ведать в долгах
@@goliafffff так там процент от зп, а не какая-то огромная сумма сразу, наличкой и купюрами по 10 баксов
@@goliafffff он ж вроде собрался на луну 🤣 .С его слов , космос он уже покорил 😁
Спасибо_теперь_буду_писать_только_чистый_КОД
Какой то гачи в лоускильном программировании на Java.
P.S. 7:38 как ты мог привезти такой баг на прод, дуд?) петпроект для бабушки делал?
Как раз недавно задумался о том, когда возвращать Null, а когда бросать исключения. И тут твой ролик! Отличный материал, буду пересматривать
Пожалуйста, будьте осторожны с исключениями. По сути своей они являются облагороженной версией goto - игнорируют return, а в худшем случае весь “освобождающий ресурсы” код, их не видно в сигнатурах функции и невозможно понять в каком месте они будут обработаны, так как они могут пробивать уровни вызова насквозь.
В видео показано показано два типа событий, где можно выкидывать исключения: исключения для валидации и null в штатной ситуации. С моей точки зрения исключения для третьего типа - непредвиденных ситуаций, которые не позволяют продолжить работу. Это может быть недоступность сервиса без которого невозможно продолжить работу, непредвиденное исключение из используемой библиотеки итд.
К сожалению ни в java, ни в c# на котором я пишу, из коробки нет нормальной альтернативы исключениям для того чтобы вернуть валидационную ошибку из метода. Можно пользоваться библиотеками типа fluent-result (для java есть видимо порт с c#), но в рабочих условиях это редко возможно.
Практический совет здесь - старайтесь выкидывать исключения реже, но если все-таки приходится, то описывайте их в документации к методу. Быстрый поиск говорит, что для JavaDoc это @throws тэг.
Без этого советы видео бесполезны -- пользователи вашего метода будут настолько же удивлены исключениям, как и NullReferenceException о котором предупреждает автор. Их будет легче отловить чем nre, но более приятным падение прода это не делает. Особенно актуально если ваш код распространяется как библиотека и у пользователей нет доступа к исходникам.
Прошу прощения за длинный текст, но все тут после видео Влада Тена, а вы с честно учитесь. Удачи!
23:27 на си никогда не писал?)
Возвращает код. А на входе параметр в который записывает результат.
Привет, величайший🦾❤️
В 2005 Java пиарилась тем, что может в локализованные названия классов и методов. Типа, пишешь названия класса прям иероглифами.
Кол-во строк в методе не больше 7?! Это только для игрушечной предметной области на бэкенде возможно. Если в объекте куча полей, и для какого-то атомарного действия с этим объектом нужно разные ветки логики реализовать в зависимости от разных комбинаций этих полей, то запросто сотни строк кода выходят. Да одна простая фильтрация с сортировкой стрима может быть легко на 10 или 20 строк. Метод должен быть максимально коротким и ясным, но длина определяется не одним желанием, но и сложностью логики. Технически можно конечно нашинковать код на мелкие кусочики, но если эти кусочки не имеют прикладного смысла, и могут только в комлекте вызываться, то это не упрощение а усложнение под видом упрощения.
Когда можно будет поступить в фаанг школу😅
В этом уроке владик расскажет как делать чистый код чисто на конвенциях
nice
А что делать, если мне нужно передать в метод 5 параметров, из которых только 2 связанны между собой? С EmailParams пример легкий, потому что все те параметры связаны между собой
Создать record MyMethodArgs и пометить lombok.Builder
Ну или писать на котлине где есть именованные параметры
@@user-ob6od8op7s это всё здорово, но я пишу на C#))
@@yourownazog8069 Named arguments в шарпах есть
@@user-ob6od8op7s да, есть. Но при чем тут они? Я хочу вместо 5+ параметров передать 1 или 2 объекта, а не делать список параметров более verbose
@@ivan-ivanov-ivanovich а сам-то ты чего не в окопе? меньше 18 еще?
Попробуй записывать звук отдельно и накладывать на видео при монтаже, сокращает размер видео и ролик становится более информативным
Если нельзя возвращать null, зачем в Java ссылкам присваивать null вообще? 😅
UpperCamelCase и lowerCamelCase
Спасибо, все верно.
Со всеми согласен кроме количества строк в методах. Уж слишком это категоричное и глупое правило "чистого кода".
Всегда полезный контент
А вот и неа, это не camelCase, это PascalCase
Есть ещё варианты UpperCamelCase и lowerCamelCase.
Учитывая, что это всё фольклорные названия, и на них нет задокументированных стандартов, нельзя говорить, что одно название правильное, а другое нет.
@@vryaboshapko есть конвеншны нейминга которые никто не отменял
@@ylcsl4378 да, есть локальные договорённости, но нет документов уровня RFC или подобного. То есть, пока мы общаемся в рамках узкой области, скажем, обсуждаем библиотеку сериализации, то да, можно говорить, что какой-то набор терминов правильный, какой-то нет. А в общем случае будет честнее говорить лишь о синонимах.
чат ге бе те)
следующая локация будет в туалете, т.к. локации для съемок похоже закончились
в Москве много мест можно аренду на день взять. Дофига. Так что он может успешно себя выдавать за миллионера)
Лол а как потом тестировать private методы?) С помощью рефлексии?
Тестируй только публичные методы ведь они используют приватные.
@@johnsnow2810 тогда процент code coverage будет стремить к нулю
@@walcermelodia приватные методы так или иначе вызываются публичными. Если нет - значит просто никогда не вызываются никогда.
Тэн, топ!!!!! Отписался
Моментами уж крайне категоричные высказывания.
все хорошо и по делу, но что должно произойти с мужиком что бы он себе гульку на макушке заплел как у тетки Вальки которая ретузы на веревках во дворе вешает сушить?
Ну это для совсем домохозяек, решивших изучить программирование.
Тем более, обо всем этом дядюшка Боб рассказал давным давно.
Checker, Validator, Manager, getResult... На чистый код не похоже, скорее дурнопахнущий )))
Нам мало! Ещё давай
Дарова, инфоцыган
CamelCase, pascalCase, snake-case, kebab_case
PascalCase
camelCase
Только ты перепутал snake_case и kebab-case. Первый как змея стелется по земле. Второй как кебаб на шампуре.
@@vryaboshapko всё перепутал блин)
Не выкупили) пересмотрите начало видоса про наименование классов, после этого я вырубил
bAnAnCaSe