Чистый код? Без комментариев! На основе книги Роберта Мартина -

  Рет қаралды 1,652

through the Eyes of a freelancer

through the Eyes of a freelancer

Күн бұрын

Пікірлер
@viper_vlad
@viper_vlad 2 жыл бұрын
По поводу PHPDoc - я еще его использую для нескольких случаев: 1. @property для Eloquent-моделей. Во-первых, я вижу список свойств модели и их типы - не нужно держать в голове эту информацию или бегать за структурой в базу (или миграцию). Во-вторых, при работе с объектом этой модели, в моей IDE (PHPStorm) срабатывает autocomplete. Это исключает момент, когда мы можем допустить опечатку в свойстве, написав, например $user->pssword. И об этой опечатке мы уже узнаем только из-за ошибки в рантайме В-третьих, это свойство IDE автоматически подсвечивает - это тоже исключает опечатку. Ну а для меня еще и смотрится приятнее и IDE не ругается на магическое свойство)) В-четвертых, мы всегда видим тип свойства. Это особенно актуально, когда наша модель использует $casts. Например, когда мы смотрим в базу и видим, что поле status у orders это строка. Но мы не заметили, что модель использует Enum Casting и превращает свойство status из string в какой-нибудь enum OrderStatus. И когда мы будем пытаться работать с status как со строкой, мы будем получать неверный результат работы кода. - Ну вот о чем я говорю: drive.google.com/file/d/1MiXXVNGCNBLOZp-wBc3ITt8xPK7are7g/view?usp=share_link 2. @var для определения типа переменной Бывают ситуации, когда из-за магии php IDE не может определить тип переменной. Приходится использовать этот PHPDoc drive.google.com/file/d/18Lv7mMhBEzXNNV01hKs1lOTPYNiczE4s/view?usp=share_link Конечно, было бы здорово, если бы я вручную мог задавать тип переменной, например так: User $user = User::where('role', 'admin')->first(). Но пока такого не завезли в php( Кстати, ты говорил, что бесят позиционные маркеры. И я здесь абсолютно согласен - если ты разделил класс маркером на условные две секции, это означает, что ты можешь по этому же принципу разделить этот класс на два класса. Но все-таки есть один момент, когда я позволяю использовать себе эти маркеры - вот он drive.google.com/file/d/1MYfGXP2Jqo1W_82xIrGJNAAWMDOHHf68/view?usp=share_link Так уж вышло, что Eloquent-модель Laravel очень богата на функциональность. И некоторые модели становятся жирными из-за отношений, мутаторов и прочих приколов. В этом случае я разделяю мутаторы и отношения на две "секции". Для меня это удобно, очень быстро читается модель - захотел добавить/найти какой-нибудь relation, открываешь класс и глаз очень быстро за счет подсветки синтаксиса находит нужную область с нужными методами. Но это единственное место, где я могу себе такое позволить, в других местах таким не грешу))))
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Да, Eloquent напичкана магией, а там где магия - танцы неизбежны. Но тут опять-таки очевиден тренд. Поскольку в 8.2 динамическое объявление свойств уже задепрекейчено, ещё кое-какие антимагические усилия предпринимаются, то и Eloquent придётся под это дело как-то перетачивать. Ну а пока есть ведь пакет barryvdh/laravel-ide-helper. А он позволяет держать объявления свойств в отдельном файле, так что код моделей можно не засорять такими комментариями. При этом IDE чувствует себя прекрасно и все свойства видит. Спасибо за подробный комментарий. Очень полезное дополнение к ролику.
@viper_vlad
@viper_vlad 2 жыл бұрын
​@@freelancer_eyes ну модели не особо засоряются - если бы мы описывали каждое свойство модели внутри класса, это был бы такой же объем строк - по одной строке на каждое свойство (ну еще импорты других классов, да). Просто есть проблемы с объявлением свойств внутри класса у модели, поэтому приходится делать PHPDoc( В общем, да, если мы используем PHPDoc значит наш любимый пхп еще не совершенен. Поэтому ждем ухода от магии, объявления типа переменной и даже может быть когда-нибудь дождемся дженериков))
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
@@viper_vlad Аминь
@ВладимирМороз-в9б
@ВладимирМороз-в9б 2 жыл бұрын
еще б добавил, что без комментариев не обойтись в случае аннотаций для swagger-а и всяких psalm-ов
@alexanders5121
@alexanders5121 Жыл бұрын
Очень классный и интересный канал. Изложение просто великолепно. Спасибо за старания!
@freelancer_eyes
@freelancer_eyes Жыл бұрын
Вам спасибо на добром слове! Рад быть полезным
@Сергей-ы6е2ы
@Сергей-ы6е2ы 2 жыл бұрын
Истории из жизни очень интересны!
@a1ex_sk
@a1ex_sk 2 жыл бұрын
Моя любимая история из жизни про комментарии в коде, это когда я на второй день работы в компании нахожу в не очень красивом коде (откровенный кастыль) коммент предыдущего разработчика "я не хотел писать ТАК, меня заставил тимлид" :) Лид действительно оказался чуваком с очень специфическим мироощущением))
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Хорошо, значит, буду продолжать вспоминать, если что-то по теме будет.
@viper_vlad
@viper_vlad 2 жыл бұрын
Согласен - истории, если в них есть что подчерпунть, очень важны. Особенно актуально для тех, у кого мало опыта работы - они знают, как писать код, знают, как должна быть устроена разработка. Но они не знают, как бывает в реальной жизни и какие пути решения есть нестандартных ситуаций. И тут такие истории от уже опытных ребят приходят на помощь. Ну и в целом в ютубе много всяких видео типа "как сделать соц сеть за неделю" или "что такое кортеж в python", но нет (либо очень мало) видео, где разрабы со стажем делятся опытом реальной разработки. Поэтому автор не просто рассказывает историю, а делится ценным опытом)
@valeryv3194
@valeryv3194 2 жыл бұрын
Так и быть! Уговорили! Достал книгу, протер от пыли и начал читать) Ну, а в практике, в игровом движке - Unreal Engine, там столько комментариев, посланий для тех, кто будет его использовать. Диву даешься, иногда выручает и документации не надо) Вот крупный проект для сторонних разработчиков, там комментарии нужны. А в визуальном программировании в тех же Blueprints, хорошо что сегодня комментарии оставил для художника, вопросы все равно задавал, но было их меньше) Многие программисты со стажем рекомендуют прочитать эту книгу. Спасибо, для меня ваши мысли ценны! Как всегда жду продолжения.
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Спасибо, Валерий! Рад, что остаётесь постоянным зрителем канала. Не очень понял про Blueprints. Там тоже есть код? Интересно!
@valeryv3194
@valeryv3194 2 жыл бұрын
@@freelancer_eyes Blueprints это инструмент кодирования в Unreal Engine, есть подобное и в других движках. Для быстрого прототипирования или настроек, выглядит как визуальный язык, состоит из блоков-нодов у которых есть входы и выходы. Вышел из настроек материалов у 3D художников. Удобен тем, что нет долгой компиляции - подключил, тут же запустил, увидел. Когда ты раскрываешь этот "узор" из нод, то там без комментариев трудно сразу сообразить. Чем-то похож на электронную схему)
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Вон оно что. Понял. спасибо!
@artfiltersai
@artfiltersai 10 ай бұрын
Спасибо за ролик, очень интересно смотреть ваши видео, только просьба в новых видео логотип канала справа верху по меньше сделайте пожалуйста много места занимает в экране
@ЭдуардЕвдокимов-й1о
@ЭдуардЕвдокимов-й1о 2 жыл бұрын
На прошлом проекте встретил комментарии подобного вида: "я ненавижу эту работу" или "блок боли". По-началу показалось забавным, а когда пришлось вносить правки... Оххх. Не поленюсь лишний раз выразить благодарность Александру за качественный контент и приятные розыгрыши)
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Спасибо!
@shiryshev
@shiryshev 2 жыл бұрын
Хорошая история. Больше историй из жизни! :)
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Надо будет и про тебя что-нибудь рассказать при случае :)
@shiryshev
@shiryshev 2 жыл бұрын
@@freelancer_eyes Меньше чем на повесть не согласен!
@pep421
@pep421 2 жыл бұрын
Спасибо за видео.
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Вам спасибо за поддержку!
@АлександрТванов-ю1я
@АлександрТванов-ю1я 2 жыл бұрын
Александр, поскольку какого-либо опыта в разработке не имею, оставляю комментарий с благодарностью за доступный для понимания новичку материал!
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Дорогой тёзка, опыт обязательно придёт, куда он денется. А если мой канал в этом хоть немного поможет - лично я буду очень счастлив.
@TheBubaololo
@TheBubaololo 2 жыл бұрын
Мои поздравления! история моя очень новичковая, не уверен что тут есть настолько новички, но если есть возможно им будет полезно. Учил я голый пхп+всю обвязку наверное около года, по книге Котерова, параллельно пилил всякую мелочь вроде ботов, парсеров и верстал простые статические сайты. Когда книга закончилась решил (этой весной) поработать на первой пусть о очень простенькой но настоящей работе, в течение наверное недели ил или 2-х устроился в небольшую компанию, делающую саеты для местного опять же довольно небольшого бизнеса. Нарекли меня фуллстеком (ЛОЛ), в реальности это была вёрстка макетов + натяжка на битрикс, всё оффлайн, в офисе, первым заданием был сайт поликлиники на 25 прям разных и не самых простых страниц, который я сверстал за 1,5 месяца, и когда подошёл момент натяжки на битрикс я убедился что не хочу иметь с ним дела, о чём и сообщил, параллельно с решением уйти, в итоге я натянул этот сайт и уходил ещё 1,5 месяца т.к. хотел закончить другие более мелкие сайты которые на меня туту же накидали и параллельно можно сказать уговаривали попробовать ещё. В итоге я сказал что завтра просто не приду, т.к. битрикс этот я точно трогать не хочу и не буду, а буду учить ларавэль как и задумывал. Уже через полторы недели меня позвали заехать в офис и дали небольщой проект на ларавел уже в качестве самостоятельного удалённого разработчика с почасовой оплатой ровно в 2 раза выше той на которой я у них работал. Мой вывод такой: минус (а может и не минус) стека PHP это наличие на входе множества неинтересной и малоперспективной работы, заниматься которой можно годами без видимого прогресса. Но есть и очень интересная и приятная работа уровнем выше где настоящее программирование, нужно помнить какая у тебя цель и не залипать на том что тебе не позволит её достигнуть
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Отличная история и очень правильный вывод! Это вещь фундаментальная. Засиживаться на одном месте вообще нельзя. всегда нужно мечтать о том, что за горизонтом и неуклонно ломиться в эту сторону. Тогда всё получится.
@pep421
@pep421 2 жыл бұрын
Bitrix должен отмереть, не понимаю зачем его используют до сих пор.
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
@@pep421 CMS вообще довольно устаревшая концепция. Но их ещё долго будут использовать, особенно при поддержке старых проектов. Потому что до сих пор сильно мнение, что CMS снижают затраты на выпуск продукта. Мнение в принципе справедливое, но проблемы начинаются тогда, когда выпущенный продукт нужно развивать и поддерживать. CMS зачастую становится оковами на руках.
@ЕвгенийК-ц9с
@ЕвгенийК-ц9с Жыл бұрын
@@pep421 наверное только из-за админки из коробки
@ЭдуардЕвдокимов-й1о
@ЭдуардЕвдокимов-й1о 2 жыл бұрын
Еще вспомнился забавный случай с комментарием. Комментарий к закомментированной функции на JS, гласил: "Разкомментируй и приготовься". Немного напрягся, расскоментировал, обновил страницу и уведил дискотеку в форме оформления заказа. Поля формы на JS меняли цвета по таймеру. Такую вот пасхалку для проггеров оставили) Всем удачи в конкурсе и уверенного продвижения Александру с каналом. P.S. Ждем в Поэтах ;)
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Спасибо, Эдуард! В Поэтов я просто обязан вернуться вот буквально в ближайшее время. На работе всё более-менее выправил, пора и делом заняться :)
@romanchubich2013
@romanchubich2013 2 жыл бұрын
@return array - если этого не написать, то IDE не узнает что там в массиве, который вернула функция.
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Да, верно. Спасибо за уточнение. Хотя идеальным решением в OOP, конечно, было бы возвращать отдельный класс-коллекцию. Но зачастую лениво, конечно,
@rm-rf88
@rm-rf88 2 жыл бұрын
Docblock уже на уровне рефлексов :-)
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Ага. Как и форматирование кода в IDE горячими клавишами. Иногда это не очень полезная привычка. В следующем ролике про чистый код постараюсь проиллюстрировать эту странную мысль.
@Mr4iloveg
@Mr4iloveg 2 жыл бұрын
Лень как двигатель прогресса и здесь внесла свою лепту. Может за нежелания писать лишнее и появляются в итоге аннотации, указание типов и т.д. что позволяет писать меньше кода и уменьшает ошибки...
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
И да, и нет. Кроме лени есть же ещё вопрос производительности (в том числе грамотное распределение памяти), безопасности и непосредственно доступных возможностей языка. Вот всё это вместе и даёт вектор развитию синтаксиса. Но лень, конечно. - на первом месте :)
@dmitryalinsky5911
@dmitryalinsky5911 2 жыл бұрын
Laravel с 10-ой версии переходит с аннотаций на атрибуты. Я когда услышал, до потолка подпрыгнул :) Так было непривычно возвращаться в PHP после 3-4 месяцев Java и Dart. Аннотации особенно бесили. Я всегда от них отмахивался. Но, как написал Viper, для дженериков (да и не только) они нужны. Комментарии в PHP - это цветочки, по сравнению с комментариями в HTML. Вот это прям масло масленное. Пробовали ли вы анализировать код с помощью PHP metrics? Там далеко не идеальный анализ, но, как минимум, очень удобно выявлять файлы с высокой цикломатической сложностью, чтобы их разгрузить для более удобной поддержки. А на счёт собственных историй, я ещё в ролике про массивы в PHP предложил вам делиться ими. В этом и есть уникальность материала. Приятно видеть, что не одному мне это интересно ;)
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Большое спасибо за комментарий! Насчёт комментариев в HTML - с трудом представляю их ценность. Всё что встречал до сих пор - это либо комментарии имени Капитана Очевидность, либо нежно мной любимый закомментированный код :) Спасибо, что напомнили про metrics! Это станет темой следующего ролика. Думаю, многим будет интересно посмотреть на этот инструмент.
@viper_vlad
@viper_vlad 2 жыл бұрын
"Откатить, накатить". Ну да, если код плохой, то без "накатить" не разгрести) P.S. было бы здорово, если бы комментарии в телеграм-канале были открыты 🙏🏿
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Обязательно открою. Просто он пока в зачаточном состоянии - никому и не требовалось. Но, похоже, пора. Спасибо за совет!
@MaxSidex
@MaxSidex 2 жыл бұрын
Комментарий для продвижения канала. Я хочу, чтоб это видео увидели как можно больше хороших айтишников и разъебали это мнение в труху
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Вы могли бы и самостоятельно начать. Только прошу выражения чуть смягчать. Я и сам не дурак поматериться, но не среди незнакомых людей.
@MaxSidex
@MaxSidex 2 жыл бұрын
@@freelancer_eyes моих знаний недостаточно, но паззл в голове не складывается, а потому хочется узреть другого мнения
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Согласен. Я бы тоже с удовольствием послушал другую сторону
@ВладимирМороз-в9б
@ВладимирМороз-в9б 2 жыл бұрын
@@MaxSidex Интуитивное несогласие? Ниче не понимаю, но очень осуждаю ))))
@views-lu6ph
@views-lu6ph 2 жыл бұрын
Эх, опоздал я на розыгрыш, а хотелось то Швеца в подарок)))) Но все равно спрошу. У Роберта Мартина есть намного более известный оппонент. Это Билл Гейтс... В своей книге "Бизнес со скоростью мысли" он как раз рекомендует придерживаться концепции полностью противоположной мартиновскому "Clean Code". Вкратце, там так - программный продукт нужно стараться как можно быстрее вывести рынок - пусть сырой, пусть плохо написанный, но вывести (такими были windows до 98/ХP версиq). Для чего? Чтобы протестировать бизнес-идею, насколько она живуча и проч. А уже потом - вычищать, допиливать, рефакторить! Он развивает это намного подробнее и детальнее, но идея такая. А что скажет автор канала?
@views-lu6ph
@views-lu6ph 2 жыл бұрын
и еще одна из главных задач по-гейтсовски - это захватить рынок!
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Дорогой товарищ! Давайте-ка я отвечу очень коротким, но отдельным роликом. Там есть что сказать.
@dmitryalinsky5911
@dmitryalinsky5911 2 жыл бұрын
Во первых - примите мои поздравления. Во вторых - желаю не терять дух и продолжать затрагивать такие интересные темы ;) Но, честно говоря. разачаровал ваш конкурс. Вы попытались предложить объективный вариант с рандомом, но это будет выглядеть ещё более субъективно, так как какой-нибудь не столь интересный комментарий, по типу этого, может победить. Я когда начал смотреть ваш ролик с розыгрышем, ожидал услышать что-то оригинальное. Предположил, что будет оцениваться какая-то интересная история по оптимизации и рефакторингу. Или что-то практическое, тут вы и для себя бы что-то подчерпнули. Но увы решили вы это по простому. Жаль, но дело ваше. Если, вдруг, этот комментарий победит, отдайте приз VIPER за комментарий в закрепе.
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Дмитрий, спасибо за постоянную поддержку, ваши комментарии всегда очень ценны. Надеюсь, вам удастся присоединиться к трансляции розыгрыша. Возможно, у меня получится чуть сгладить ваше разочарование. 🤐
@dmitryalinsky5911
@dmitryalinsky5911 2 жыл бұрын
​@@freelancer_eyes Постараюсь. Есть несколько вопросов, надеюсь смогу задать. На будущие стримы, лучше всего создавать запрланированную трансляцию с точным временем. У вас основная аудитория - это взрослые работяги, и нам бы знать, во сколько стоит освободить своё время под такое мероприятие :)
@dmitryalinsky5911
@dmitryalinsky5911 2 жыл бұрын
@@freelancer_eyes alinsky.dmitry@gmail.com
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
@@dmitryalinsky5911 Всё получилось, Дмитрий?
@dmitryalinsky5911
@dmitryalinsky5911 2 жыл бұрын
@@freelancer_eyes Только проснулся :) Курс получил, спасибо!
@bogdanchirukin1050
@bogdanchirukin1050 Жыл бұрын
ааа! закон леблана... я колегам "л" забыл сказать
@matash149
@matash149 Жыл бұрын
почулось 'закон ...блана' )))
@freelancer_eyes
@freelancer_eyes Жыл бұрын
Да, не повезло человеку с фамилией. Хотя он этого никогда не узнает.
@topalek
@topalek 2 жыл бұрын
товарищ в закрепе опередил (( Действительно, комментарии в коде, в частности докблок очень помогают в шторме. Сам часто пользуюсь. Особенно в этом помогает пакет для лары barryvdh/laravel-ide-helper. Так что пока что, совсем без комментариев, не выходит)))
@freelancer_eyes
@freelancer_eyes 2 жыл бұрын
Ничего, когда-нибудь доживём до объявления: теги комментирования в PHP задепрекейчены, в следующей версии будут вызывать фатальную ошибку 😂 Шутка, конечно. Почти
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН
Что-что Мурсдей говорит? 💭 #симбочка #симба #мурсдей
00:19
coco在求救? #小丑 #天使 #shorts
00:29
好人小丑
Рет қаралды 120 МЛН
[ENG sub] Closures in PHP.
23:01
Глазами фрилансера
Рет қаралды 2,7 М.
Генераторы (generators) в PHP | Глазами фрилансера
34:17
Глазами фрилансера
Рет қаралды 19 М.
Laravel-data от Spatie: просто и со вкусом! Описание библиотеки.
43:52
Вызов aka Challenge
16:50
Глазами фрилансера
Рет қаралды 337
Облачный блог: запустить WordPress в AWS с помощью Lightsail
54:13
Глазами фрилансера
Рет қаралды 645
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН