Вся суть чистого кода
HTML-код
- Опубликовано: 11 окт 2024
- Курс по созданию простой игры: с нуля - HyperCasual от XYZ: bit.ly/3FZhBjF
Промокод для получения скидки на курс: YOUEXTREME
Почитал я значит, что вы считаете, что я запрещаю чистый код. Но как я могу запретить несуществующее? И после этого ещё меня просят выпить таблетки... Такое ощущение, что меня окружают какие-то безумцы.
_____________________________________________________________
💰 Бонусы за спонсорство
www.youtube.co...
🖤 Telegram: t.me/extremeco...
💙 VK: extreme...
🧡 Insta: / _extremecode
💜 Discord: dscrd.in/extre...
🤎 GitHub: github.com/ext...
Лицензия Creative Commons Attribution 4.0 на использование трека Hyperfun (исполнитель: Kevin MacLeod): creativecommon...
Источник: incompetech.com...
Исполнитель: incompetech.com/
Братан, хорош, давай подпишись на наш Telegram канал, мы там байки и кулстори травим
🖤 t.me/extremecode
Не путайте код с листингом программы. Код может быть для процессора. Так вот чистый код такой, что задача выполняется на данной архитектуре, но при этом код занимает меньше места или обеспечивает максимальное быстродействие (зависит от цели)
В чем разница между чистым и нечистым кодом?.
@@VeronikaBodnar Оптимальный: самый короткий или самый быстрый
Здравствуйте, пишите код хорошо, а плохо не пишите.
До свидания!
без конкретики такой тезис не имеет смысла. Так же можно назвать твою мамку любым оскорбительным словом, и плевать на твои чувства и факты
Ах, люблю чашечку "из крайности в крайность" по утру.
а я люблю коленную чашечку
@@artem1430 а вы ценитель высокого искусства
люблю ложную золотую середину и псевдокрайности на закусь
@@ястреб-ц7ц точнее любишь теорию о "ложной золотой середины".
Чистый код - пустой файл
Конфуций (2025-2029 )
Вот да. Когда писал чистый код, всегда получал пустые файлы
а если в метаданные говно попало?
@@YngvinLion вилкой до блеска отчистить
нет, к нему тесты не написаны!
@@oljjol тесты загрязняют код, поэтому их нетк
Все помнят статусы ошибок наизусть и замечательно понимают их из контекста!
А почему у этого комента так много лайков?
Когда над одним проектам работают 1+ команд или даже так, когда работают 1+ человек. То примерно через месяц не кто не помнит, ни коды ошибок, а из контекст может только больше запутать)
@@FreakyKot 1:36
Ну конкретно сишники их реально помнят.
Да и в C# есть методы сравнения, которые возвращают int отрицательный, положительный или 0. Почему не int'овый enum? А хуй знает, работаем с тем что есть.
Ctrl + F
"А тем, кто считает, что гвозди можно забивать только молотками, желаю самого наилучшего" - и пошел забивать гвозди своей увесистой мясной битой
садиться жопой пока гвоздь не погнется, либо жопа не будет разодрана в мясо
Я от орехи разбиваю рукой. Гораздо удобнее, чем бежать за молотком
Интересно если написать ии для дебага то 1 что он сделает это удалит код?
Rage32 решил блоху подковать?
@@shvetsov777в зависимости от его интеллекта. Если он будет достаточно умным то он в первую очередь удалит ту ошибку, что сидит перед монитором.
Гвозди можно забивать книгой по чистому коду.
у меня в мягкой обложке((
@@TopToro так даже интереснее
Каждый может забить молотком гвоздь, но не каждый может забить забить молоток гвоздём
на гвозди можно забить и не забивать
Молоток создан для того, чтобы им забивать гвозди.
Но это не значит, что гвозди можно забить только молотком.
-- ExtremeCode, 2121 г. н. э. ...
Напоминает название книги Адма Сэведжа ,,Любой инструмент это молоток,,
@@anatemamorf2030 по фактам, я гвоздь телефоном забил
Погоди, как это я отрубился на 100 лет, и почему за это время ничего не изменилось?
и что не так с этим утвержденим?
молотком можно еще стекла и головы вонокодерам бить. а гвозди при хорошей снаровке можно и голой рукой заколачивать. так что там все логично и верно.
да и молотком можно не только гвоздь забить.....
Что говорит автор:
Что слышу я: тесты больше писать не нужно.
Скорее: ИДИ БЫСТРО СТИРАТЬ ТЕСТЫ!!! И БОЛЬШЕ ТАК НЕ ДЕЛАЙ!!!
Да не он скорее о том что многие тесты примитивны и избыточны и проверяют что 0 равен 0 а не о том что их не надо писать
Ведущий забыл упомянуть, что в Raid Shadow Legends очень чистый код
когда код написанный евреями стал чистым?
фух, слава богу, а то я думал, что придётся все эти паттерны учить
Паттерны сложная, но довольно познавательная штука, да не все пригодятся, но лишним будет
@@nomugop8017 "не пригодятся", "лишним не будет" 🤔🤔🤔
Учить придëтся, надо же ещё технические собеседования проходить
@@hiryu70 там "лишним будет"
@@ШуРик-д9ж действительно 🤨
Смысл юнит-тестов не только в том, чтобы упасть, но и в том, что они по сути описывают требования и контракты, которым должен удовлетворять код, то есть являются документацией к основному коду. Причём такой документацией, которая не может устареть просто в силу того, что если поведение кода начнёт расходиться с требуемым поведением, зафиксированным в тестах, то тесты упадут.
А твой "пользователь", который использует твой сервис:
если поведение кода начнёт расходиться с требуемым поведением, зафиксированным в тестах, то тесты упадут.
Даст тебе такой же результат 1 в 1, что поведение не совпадает. Только ты не тратишь времени на создание тестов в данный момент.
@@vladyslavhrehul2185 отличный подход, особенно если сбой в системе может привести к многомилионным потерям или человеческим смертям.
@@vladyslavhrehul2185 ну и плюс ваш контраргумент вообще никак не опровергает мой аргумент о том, что юнит-тесты являются инструментом документирования. Вы о том, как ваша система должна работать, спрашиваете у её пользователей? Наверное, нет.
@Михаил Чумаков Смысл юнит тестов понятен, он в том, что вы изложили, это да, логично, но должны ли они писаться наперёд, как гласит ТДД? И должны ли покрывать вообще весь код или только критические секции? Потому что на практике требуют количество тестов, а на их качество внимания практически не обращают
@@chumakov_mikhail Насчет 1 - тесты не дают тебе 100% работоспособности системы, так как ты пишешь тесты, чтобы покрыть код, а не для того чтобы выявить уязвимость. Тк - ты не можешь предвидеть всего в силу человеческого мышления.
2 - По Вашим словам вы не сможете\ не умеете разобраться в системе, где нету тестов?
Также документация - это документ не только для программиста, но и для обычного человека, тот же самый клиент.
Вы клиенту тесты вместо документации показываете?
Btw, последнее место, куда бы я смотрел чтобы понять как работает система - это тесты.
Так так так видос однозначно запилин только для рекламы курсов по гемдеву 100% а мы на название повелись))
Чел проведи сначала интернет, а потом будешь нас учить, мы уже год смотрим на 17% загруженый npm
Это не канал, а психотерапия для всех перепуганных "гавнокодеров". Посмотрел и чувствуешь себя хорошо ))
Обожаю!
за то время пока "правильный" кодер сконфигурирует окружение и напишет тесты, то так называемый "говнокодер" уже будет пушить проект на прод.
если что-то работает - то оно работает и будет работать дальше, если что-то неработает, то оно и не будет работать и требует доработки. если код не написан по все правилам из умных книг это не значит, что это плохой код. этот код служет той цели для которой он был создан в данный момент.
%USER_NAME% И пока оно не работает у него на проде, ты теряешь пару тысяч баксов в какой-нибудь транзакции, и с разорванной жопой бежишь к полисменам восстанавливать справедливость. Или, если прод - это автопилот твоей будущей авто, просто лежишь мертвый.
@@stappa7 ты видимо либо плохо смотрел видео либо ты из тех упорртых, которые считают, что действительно нужно 100 покрытия. Зачем нужны тест? Для того, что видеть где у тебя неправильно написан код, если он у тебя неправильно написан, то он у тебя не будет работать в любом случае. А 100% покрытие кода тестами тебе не даёт никаких гарантий того, что в тебя все будет работать стабильно.
@@stappa7 ЗЫ. Большая часть тестов нужна для тог, чтобы проверить правильные ли тебе приходят данные и какие данные ты передаешь дальше. Для того,что бы этим не гемороится ты можешь использовать статическую типизацию и писать свои интерфейсы и типы, а не заморачиваться с тестами
%USER_NAME% Я из тех упоротых, которые в ответе на комментарий отвечают на комментарий, а не на видео. И да, ты не понимаешь, зачем нужны тесты, из-за этого и рассуждения такие. Когда начнешь понимать, тогда и полезность начнешь ценить.
Все понял, юнит тесты не нужны( ͡° ͜ʖ ͡°)
Хорошо потроллил)
Они нужны ты что не хочешь развести заказчика на лишний код?
Открываешь тест, и пишешь ассерты
true==true, false==false, 8 это int и так далее
А если работаешь с с/с++, то пишем
#define true false
@@Gameplayer55055 стоп а так можно чтоли было
аргументированное видео, как обычно лайк
Как ты смеешь обижать мои любимые паттерны, мой PIDOR плачет в сторонке из-за тебя, как не стыдно?
ВАУ, бобастикер
Серия видосов про чистый код ярко иллюстрирует почему программистам стоит изучить философию в общем и диамат в частности. Но нет, мы лучше будем гореть с того, что формалистские методы в виде набора одних и тех же чекбоксов, которые надо выполнить, разбиваются о необходимость каждый раз сопоставлять логику конкретных кейсов и логику абстрактных архитектурных решений.
🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬🔬
""Месяц работы обойдётся в 7000 американских гривень" - спасибо. Поплакал.
галера отожмёт половину, всё ок
@@ДанилГончаренко-б6ш "половину". Ха-ха-ха. Судя по историям (компании называть не буду) там далеко не половина.
@@pascal91_live ну это я приуменьшил, чтобы самому не заплакать
Знаете! Я уже почти год учусь писать ГОВНО-код, не потому что это хорошо или плохо...
А потому, что: "САНЯ, БЛЯТЬ, МЕРТВО-ЛИНИЯ ЗАВТРА! НУЖНО, ЧТОБЫ РАБОТАЛО! СВОИ "ТВЕРДЫЙ" ДОПИШЕШЬ ПОТОМ КОГДА-НИБУДЬ!"
И вот так я засрал уже три к ряду проекта... Отсутствие должного опыта? Ну, ХЗ, пять лет в индустрии... Посмотрев "Экстремальную Соду", понимаю, что дядюшка Боб - просто бес на моем левом плече, который в противовес ангелу Чтобработаилу шепчет мне: "Псс, парень! Ну хоть тут немношк солида добавь! Никто и не узнает! Да успеешь хоть до сегодня до утра, но как же без мышления абстракциями, а не реализациями?"
Как всегда - топчек👌 Пожалуй стоит начать обзывать экземпляры классов одинарными букавками в js))) ну, или просто кататься хлебалом по клаве при нейминге, ну а чё - Линукс же как-то написали🤷♂️
Обфускатор помоему так и делает -____-
@@anagr_ стань обфускатором
Он потому и такое говно, что как то. Не хватает железной руки стандартизации. Кто-то сделал прогу, которая как то работает. О, давайте выложим её на репозиторий! А че пусть скачивают это недоделанное говно, оно же как то работает. Зачем заставлять человека доделывать программу до ума? Пусть все страдают, но не он. А нормальную программу сделаем когда нибудь потом (никогда)
@@LLlblKAPHO я тебе секрет открою - почти весь софт так написан - из говна и палок... Даже банковские системы (российские) работают через жопу
@@LLlblKAPHO Так линукс - один из самых быстроразвивающихся проектов, с высоченным коэффициентом багфиксинга. То есть несмотря на то, что разработка линукс нарушает вообще все стандарты разработки(там челы друг другу код буквально по почте кидают), они при этом каким-то образом по "бизнес-метрикам" он еб*т любую коммерческую дрисню, в которой мы все работаем
Бабки залутал, срач развёл, работу сделал.
Когда у тебя овердохера задач на работе, не до чистого кода. Работает, и то хорошо
Главное потом заполировать видосиком про то что чистый код говно)
Удачи потом вносить новые фичи, в ваш зоопарк
@@anmaner4822 А в чем проблема?
@@jabloko4823 Действительно, в чем проблема, с каждой такой говно-фичей, ваша кодовая база будет становится все хуже и хуже, разобратся в уже написаном коде будет становится все сложнее, время, которое вы тратите на внедренее новых фич будет расти и в какой-то момент, вы будете тратить несколько недель на написания минимальных изменений, если тебя и твоего заказчика такой сценарий устаивает, то пожалуйста.
@@anmaner4822 ну так-то рефакторинг провести не проблема, я считаю. И потом уже фичи клепать
Я согласен что мы должны договариваться среди комманды как писать код. То что внешний мир не понимает наш код - это не проблема, ты прав. Но скажем что средная продолжительность моего контракта в компании это 2 года. После меня сюда может прийти другой человек, который понятия не имеет как мы работали до этого. Ему скорее всего будет сложнее разобраться, если переменная называется "p" а не "configString".
Я думаю что чистый код нужен для людей которые продолжат твою работу после тебя.
Некий единый стандарт, да.
Есть стандарт, но нет идеала, в этом вся идея
Понятный код нужен прежде всего для тебя самого, ибо когда ты сам вернешься к этому проекту спустя год-два-три, то ты ничерта сам не поймешь и будешь возмущаться "ну кто же накалякал сию херню?!". Да и вообще, в прозрачно написанном коде легче отыскивать баги, отлаживать его, и даже рефакторить. Например, повторное использование кода в другом проекте, при необходимости вносить некоторые коррективы в код. Но если он написан левой ногой курицы, то ты сам ничерта там не поймешь.
@@UmbertoFellinni +, к тому же если код часто повторяется, проще ошибиться, мало того если нужно будет что то изменить, придется изменять в нескольких местах
Да и даже буквально пару месяцев работы над параллельным проектом, ты станешь тем же новым Васей в своём старом проекте и на 10000% забудешь многое и тебе самому будет в разы быстрее вспомнить всё
Для демонстрации чистого кода откроем репозиторий линуха.. Закрыть видео х)
Так можно вызвать сотону.
О кста! Про гвозди. Мне нужно было дюпеля в бетонную стену в крутить недавно и посадить на них доску. Но вот проблема, у меня не было дрели и дюпилей. Поэтому я проковырял в стене дырки, вставил туда саморезы, забил их гантелей(молотка тоже не было) и залил супер клеем - держится пиздец, не отодрать, ток вот теперь у меня есть дрель, дюпеля и даже молоток на всякий случай...но вот проблема, доску не отодрать. Как вам аналогия?)
Но без гантели Марк уже не мог...
Когда берёшь в руки молоток, все проблемы становятся похожи на гвоздь ;)
С микроскопами та же фигня.
все всегда пишут чистый код и понимают друг друга, а ты единственный в мире нет
Живи с этим :3
Работал на одном продукте, в какой-то момент уж очень часто начали вылазить баги в стиле пнул по ноге, отпала жопа. В теории можно было бы получше изолировать модули друг от друга переписав часть кодовой базы, но уж больно накладно выходило по времени и трудозатратам. В этом случае интеграционные тесты + юнит тесты сработали на отлично.
А про TDD, лично мне в начале карьеры этот подход помог разобраться с проектированием. Когда думаешь о том как ты хочешь реально использовать то что пишешь, а лишь потом пилишь имплементацию, это помогает писать гораздо более «чистый», понятный и приятный в пользовании код. Впрочем это и так приходит с опытом, просто TDD может ускорить этот процесс для новичков.
В общем покрытие тестами для больших долгосрочных проектов скорее экономит силы и время всех участников процесса. Но как и всегда, это не догма, и может быть совсем не вашим случаем
Сначало ему ДОРОГО писать код с тестами, а потом НЕ ДОРОГО забивать гвозди микроскопами.
Суть то в том что микроскоп у тебя уже есть, а молотка нет.
@@ДаниилЧикиш-о4н суть в том, что когда забъешь гвозди микроскопом, то у тебя не будет микроскопа и такой себе молоток.
@@ДаниилЧикиш-о4н у меня нет микроскопа.
В имбеде есть пословица: чистый код - это когда с каментами. Как можно говорить о чистоте, когда тебе сишечка напару с железом генг бенг устраивают?
ExtremeCode, ты забыл упомянуть, что перед тем как забить гвоздь микроскопом его нужно разобрать, чтобы не повредить хрупкие части, а то насмотрятся люди тебя и пойдут ломать дорогостоящее оборудование)
Открыв книгу по середине ты не поймёшь кто это за персонажи и что за события тут происходят.
Точно также открыв код проекта по середине, ты не поймёшь название переменных (считай что имена героев романа). И также не поймёшь многие функции (считай что события романа)
когда он уже создаст свой лучший проджект?
Сначала сделать npm install
тесты - отличная документация для кода.
тем более экономят время на проверку мердж реквеста, особенно если он от джуна.
бывают и требования к 100% покрытию тестами, но это уже совсем другая история с поиском непокрытых строчек и истанбул игнорами тут и там.
Гвозди можно забивать ревьюэром
когда я смотрю ваши видосы, начинаю любить и принимать свою работу. Спасибо экстримкодерам
Не волнуйся, это пройдет
@@LotmineRu эх, знаю
да, спасибо быдлокодерам (говнокодерам) за их индусский код.
Про экспоненциальный рост стоимости исправления багов автор со своим примером слышал? Если слышал, то почему обойден вниманием данный момент?
@@АлексейВикторович-б5ж далеко прошли на таком подходе? Реально интересно.
@@TopToro самое смешное, что это работает)
@@LotmineRu вот мне интересно на сколько это работает. Сколько это в ЗП, хотя бы приблизительно? У меня на прошлом месте работы, были такие программисты, которые писали настоящие, отборные спагетти=) При этом били себя в грудь со словами: "я 20 лет программист!". Про себя я думал: "емае, ты 20 лет, программист". Понимаете, не тимлид какой-нибудь, а моего же грейда программист. Как по мне не похоже на историю успеха=)
@@АлексейВикторович-б5ж ну тоже резонно впринципи. Но все же в плане горизонтального роста, если сидеть и пописывать говнокод и не отсвечивать, чего реально удалось добиться?
Классный троллинг всех и вся, хотя последние видео сводятся к одной фразе: серебряной пули не существует)
В приоритете у программиста - оптимизация, а за ней идёт возможность развития, банально не закрывать себе возможность добавлять новые функции, а вот использовать функции вместо констант для "чистого" кода я считаю безумием.
Нет смысла писать хороший код. Все равно заказчик завтра передумает и пришлет таск переписать все по другому) Лучшее что можно сделать - держать код максимально простым, чтоб любой недоразраб, или ты сам в 2.00 ночи, мог понять что в нем происходит. Чем меньше в коде всяких абстракций и паттернов, тем лучше.
Чем быстрей ты освоишь слепую печать 10 пальцами - тем больше у тебя будут комментарии которые ты напишешь по ведению сердечка а не разума.
@@ШивеГеоргий Нет потребности печатать с такой скоростью. Когда пишешь код, бОльшая часть времени уходит не на печать, а чтоб придумать, что именно печатать.
Ну использование паттернов не делает код лучше, но паттерны же создавались чтобы решить ситуацию с ебанутыми заказчиками - чтобы у тебя были какие-то структурные единицы, которые отвечают за какой-то один аспект.
Но как перестать делать кашу из -er классов? Хуй знает.
Я нашел твое видео по запросу в ютубе, поэтому целенаправленно его просмотрев, хочу согласиться с наболевшим использованием tdd bdd and atdd, и еще в домешку паттерны и принципы, так вот понял что сроки разробтки улетают в космос, а поиск ошибки в коде доставил массу нервов. Так как задача была декомпозирована на кучк классов каждый со своими обязанностями, отдельно запросы отдельно команды, и дебаг превратился в мельтешение от метода к методу картина ваще
Рот шатал этих патернов. За 8+ лет много раз перечитывал. так и не понадобелись до сих пор. Уже забыл их, не буду перечитывать
Касательно микроскопа и гвоздя. Даже если микроскоп не задумывался в качестве молотка это не означает что его нельзя использовать для забивания гвоздя. Но нужно понимать в первую очередь время и место необходимости использования того или иного инструмента. Необходимость в обучении является одним из важных составляющих частей программирования. К примеру, завтра станет модно забивать гвозди, и как вы кому не доказывайти но вас будут не так охотно брать на новую работу если вы забываете гвозди микроскопом. А с другой стороны нужно понимать что если в вашем случае необходимо забить один определененый гвозд и не терять время то почему бы и не использовать микроскоп. Главное не выходить в крайности и понимать что опыт в новых инструментах вам всегда приготодится и также понимать что не нужно получать опыт ради опыта
Сейчас бы рекламировать XYZ...Которые ещё летом раскрылись как разводилы
Ради справедливости отмечу что прокатились не по всем курсам а только по конкретному и он кстати был про программирование (для игр)
А что там за история? Есть какое-то видео?
@@neitralov739 я так понял там была такая схема:
Ты платишь мне 100$ за каждый курс;
А если заплатишь 600$, то получишь все курсы со скидкой, но поэтапно.
В итоге люди платили 600$, получили один курс. Затем второй курс им пришлось уже ждать некоторое время. Затем третий курс опять ждать. Люди ждали и ждали... Люди уже писать начали: ну где там ваш курс?! А им отвечали: ща ща он ещё не готов полностью.
В итоге людям так и не предоставили все курсы полностью. В итоге им продали несуществующие курсы.
Вроде так всё получилось, если я правильно всё понял
@@paztwelне звезди, если не знаешь. Они платили за один курс, и им по итогу дали только 2 лекции из 8, они ждали год и так остальные 6 лекции не получили
Окей, я первый раз забайчен на комментарий, потому что подавать такое на серьёзных щах - это перебор.
1) Код, который взят из репозитория Linux, нечитабельный, и не важно, кто его написал, хоть Линус, хоть дядя Вася из соседнего подъезда. EINVAL написана большими буквами, значит это глобальная переменная, остальные функции возвращают нули - в C это означает, что ошибок нет. Итог: код не читабельный, но не из-за возвращаемых значений, а из-за nameing'а переменных.
2) Паттерны нужны, чтобы не придумывать велосипед, и их всего 21. SOLID и остальные принципы помогают мне в четких формулировках держать в голове набор правил, следуя которым я буду уверен, что мой код расширяем и я слежу за осями изменений. А значит через месяц мне не придется перелопачивать половину программы, чтобы добавить один маленький класс, который красит кнопочку.
3) "Тест, полезен только когда он заваливается". При этом 10 секунд назад говорил, что TDD позволяет следить, чтобы ранее написанный код работал, то есть тесты завалятся в случае ошибки. Это такой бред, что мне кажется я на этот комментарий потратил больше времени, чем автор на написание всего сценария. 5:17 - 5:40 это просто бред сумасшедшего.
4) Смотрите, TDD приучает ставить задачу, выполнять только поставленную задачу, и коммитить только выполненную задачу (и не больше). При таком подходе у вас будет 100% покрытие тестами, и это нужно, чтобы заметить ошибку при добавлении будущих фич, если они затронули старый код и случайно сломали его. Написание тестов после разработки фичи не так эффективно (об этом рассказывается в одной из лекций Боба, они есть в открытом доступе). Если у вас на проекте не достаточно времени на написание тестов, то используйте хотя бы подход с постановкой-выполнением-коммитом без написание теста и готовьтесь через пару месяцев ловить баги, которые вызвали новые модули программы, затрагивающие старый код. А SOLID и остальные принципы помогут вам меньше косячить.
молодец
Садись, пятерку получил
Чел с плейлистом ЕГЭ по информатике обучает анскильных нубов как нужно программировать, ага, понятно
@@lazydevelopment Ой, извини, человек, переходящий на личности, что я готовлю 11 классы к ЕГЭ и собираю хорошие материалы в плейлист на ЛИЧНОМ канале ¯\_(ツ)_/¯
краткое содержание последних роликов: тесты - говно, солид, драй, вообще все паттерны и парадигмы - говно, переходим на джс и натягиваем сову на прототипы
На js перейдем только когда npm пакеты доинсталятся
Extreme, когда будет сходка с фанатами? Мы тоже любители голандского штурвала в голубых плащах.
>Тесты полезны только если они падают
Ну ты выдал конечно, тесты полезны при разработке любого нового функционала, потому что они позволяют экономить огромное количество времени не заморачиваясь с проверкой своего кода. Написал фичу и запустил тесты, тесты прошли значит всё готово, тесты упали значи есть проблема. Без тестов после изменения какого-то нибудь глубокого класса внутри твоего многомодульного проекта ты должен будешь пойти руками тестить все модули чтобы убедиться, что всё работает, и даже потестив и потратив кучу времени на это всё равно шанс того, что ты сломал что-то, что не проверил гораздо больше чем шанс того, что это не покрыто тестами. Можно конечно жидко сказать что для этого достаточно интеграционных тестов, но желаю удачи в проекте на 500к строк после изменения файлика в kernel модуле идти дебажить какую-нибудь гуишку, которая зависит на этот kernel модуль через ещё 3 репозитория, потому что в ней кнопка стала рисоваться по-другому
Как снять ролик такой же, как у ExtremeCode:
1) Заходим в комменты
2) Ищем те самые 3% людей, которые с тобой не согласны
3) Преподносим их как даунов
4) Говорим какой-то бред, обсирая всё подряд умным голосом
5) В ролик 8 минут вставляем полторы минуты рекламы
6) Делаем запись экрана консоли
7) Хапаем просмотры на том, что "переиграл" тех, кого нет
Потому что наличие kernel модуля нарушает SOLID. Или я не прав?
@@Torbjorn-ph7rt Во-первых причём тут solid если речь шла про полезность юнит тестов
Во-вторых solid'y невозможно соответствовать или не соответствовать, это не инструкция и не набор чётких правил, это набор субъективных рекомендаций
@@tramfromgames3595 никто не сомневается в полезности юнит тестов, просто когда говорят что из-за изменения в одном модуле рушится всякая мелочёвка в другом модуле это означает что архитектура сильно связанная а наличие кернела настолько сильно влияющего на систему говорит о том что нарушен принцип открытости/закрытости, то есть теоретически вы НЕ должны модифицировать ядро если вам так необходимо его было сделать а только расширять с помощью дочерних модулей. То есть правильным решением в вашем случае сделать ядро вообще пустым и не модифицируемым. Но это разумеется теория, на практике всё это никогда до конца не соблюдается. А юнит тесты да не помешают даже при идеальной архитектуре. (ИМХО. Не настаиваю.)
После этого видео я стал понимать, почему на фронтенде так много экскременто-кода: людям надо просто кнопочку поправить.
Дед, ты дал правильный ответ на неправильный вопрос. Суть бомбежки в стандартизации подходов и хейт говнокода в том, что он размазан по ободку унитаза, а не структурированно смыт в канализацию
Это ты чего-то не понял, бомбежка была в адрес программистов, у которых в голове видение свое Чистого кода™, которое почти никогда не совпадает с видением Чистого кода™ других. И когда эти лбы сначала гыгыкают над "говнокодом" как в видосе, в процессе культурной беседы они уже кидают говном друг в друга, потому что легендарный Чистый код™ сука довольно абстрактный и как такового его нет.
@@fumanchez И тебе повторю, что твой ответ правильный на неправильный вопрос.
В отличии от ЧСВ подавляющей массы программистов, чистый код вовсе не абстрактное понятие. В технике есть понятие технологической карты с четкой градацией точности проработки процессов. Так вот как бы поверхностно я не расписывал бы работу, если не придерживаться правил оформления, то результатом останется лишь подтереться.
Чистый код, это когда ты постишь на стаковерфлоу или еще где техкарту для кода любой сложности проработки, тебя поддерживает большинство, а меньшинство, что ее отрицает становится говнокодерами псевдогуманитариями. Потому что истина не в абстрактных понятиях, а в поддерживаемой сообществе структуре паттернов, действий и наследуемости решений.
@@ИльяИванов-ъ1л я не очень понял за что ты топишь. Типа если оформлять типовые документы не по стандартнам - они будут бесполезны, т.к. они нужны для уже существующего документооборота. Ок, но вы создаете один и тот же продукт много раз, а в программировании как бы совсем другая задача - продукт выпускается готовый к изменениям и разный под каждый заказ.
Один и тот же результат может быть получен миллионом способов, а на стэкофервлоу решают как правило чисто технические вопросы, и выбирают максимально лаконичное решение. И не факт что оно соответствует вашим внутренним гайдлайнам.
@@fumanchez нет-нет, это только одна сторона монеты, сама концепция получения какого-либо результата подразумевает наличие только одного самого лучшего решения, как и пути к нему. Миллионы способов -, это подлог для недостаточно компетентного спеца, чем больше опыта, тем уже выбор вариантов(отсюда и проблема отсутсвия свежего взгляда у старичков, но не суть).
Собственно говоря это и есть причина по которой все бомбят. Что сами прогеры, что их работодатели. Первые в этом варятся, а вторые не могут нормально оценить трудозатраты и з.п.
Будь в вашей отрасли четкое понятие чистоты кода для каждой из степеней проработки проектов, это бы оздоровило индустрию в целом.
Я писал о техкарте, если кратко, то это последовательность операций с различной степенью проработки в зааисимости от требований к проекту. Она может быть по госту, написаной на коленке, устная. А все таки неизменной будет ее структура и информативность.
Например самолет членят по агрегатам: крыло, фюзеляж, киль и т.д. Всему присваивается аббревиатура и номер (как и вашим переменным), ты никогда не перепутаешь последовательность сборки, сами детали и к какой группе их отнести(сразу стыдно за тех, кто ноет на ловину ошибок из-за изменений в многоуровневом коде не так ли?).
Да и сами ошибки в том же самолетостроении весьма забавное явление, ведь все вдоль и поперек ограничено предельными характеристиками(а кто-то ноет за десяток лишних тестов). Конечно, если ты кодер, тебе не надо лепить тесты ко всему что видишь, но тебе достаточно слепить самодостаточный блок кода который нахер не развалится от одного чиха, а будет информативным и легко расширяемым за счет хотя бы правильного наименования функций и переменных, наследования параметров(меняйте сраное название одной и той же переменной, если используете ее в разных блоках, придумайте переменные костыли для определенных задач). Да это хоть что-то. Кто-нибудь сделайте пост на форуме и научите программистов писать. Меня рвет от смеха, ведь сейчас большинство из них похожи на австралопитеков, которые рисуют по камню.
Я когда взялся этому учиться, то у меня тупо руки опустились. Сама суть простая, но вариться во всем этом даже за хорошие деньги я не смогу.
@@ИльяИванов-ъ1л есть функциональное программирование, где ты можешь пропустить объект через цепочку функций, которые (если они чистые) работают без вообще побочек. Но практика показывает, что на одних лишь чистых функциях ничего серьезного не напишешь, как минимум потому что есть еще и состояние, которое постоянно меняется и зависит от внешних факторов.
Честно, претензии тупейшие - почему тогда разные компании делают разные самолеты? Почему они просто не могут взять и начать выпускать один самолет, как у всех?
Короче я как кандидат в маслята понял что автор хочет сказать что тесты не могут окончательно доказывать что программа сделана правильно
Плохой код - хорошо
Чистфй код - говно
Реакция новичка: Шо за нахер?
Самое смешное случается, когда встречаются TDD и Agile. Требования и юскейсы появляются частями и за частую противоречат тому, что уже сделано. Тесты переписываются на каждый модуль по 10 раз и за спринт команда успевает сделать объём, который в нормальных условиях делается за 2 дня. А ещё большая наркомания происходит, когда хотят юнит тесты на фронте, и не смоук тесты, а с покрытием в 60 или ещё веселее 80 процентов.
Чистый код -это когда ты пишешь чистый код
Я не познал дзен ТДД, но хотя-бы с ним ознакомился. Самое первое, что нужно сделать по этой методологии - написать тест, который будет зафейлен из-за того, что ты не напейсал ещё толком никакого кода и тест должен отображать в принципе задание. В идеале тест пишешь не ты, а твой начальник или архитектор. И таким образом при помощи тдд от тебя получают банально то, чего хотят. Не спорю, что идеального кода нет, но солид, драй, паттерны - это не про чистый код. Во всяком случае не в моем понимании. Это про то, как команде не толкаться жопами на пятачке метр на метр и не допустить поведения из серии: я вчера ударил молотком по пальцу, но отвалился почему-то правый глаз, а нога сместилась на затылок.
то, что тесты не нужны это мягко говоря крайне спорное утверждение. просто тесты надо уметь писать как и любой другой код, а хороший тест полезен даже если он не падает хотя бы тем, что благодаря тестам особенно модульным улучшается дизайн компонентов и системы в целом. любой кто нормально работал по tdd это понимает просто как очевидную вещь
Чистый код у каждого свой. Для меня чистый код это:
1. Модульность => возможность масштабирования.
2. Реализация того, что надо, так, как хочу я, а не так, как хочет дядя Вася или мировое сообщество.
3. Документация отдельно от кода, а не вместе. Терпеть не могу, когда документация расписана через комментарии в коде!
существует ли хелловорлд, разработанный с использованием всех необходимых шаблонов проектирования, принципов и полностью покрытый тестами?
Чисто технически, гвозди можно и вставлять руками, но сомневаюсь, что найдутся любители такого рода удовольствия
Почему у тебя в кадре все время создается приложение react через npx?
90% гвоздей забиваю не молотком))) Вы ещё не знаете чем я саморезы кручу)
Проблема в людях, но у нас есть молоток. Вот, что я понял из видео. Проблема только в том, что маньяк Пичушкин ещё сидит, а его рука хорошо помнит молоток.
Сразу видно опытного разработчика. Бальзам на душу.
Братан, хорош, давай еще записывай такие крутые видяшки.
4:41 Объясните, пожалуйста, про Шевчука) Речь же про Александра из ITVDN?
кажись тут отсылка к старой рок групе ДДТ с вокалистом Шевчуком - хотя хз хз может я слишком стар и теперь модные новые Шевчуки :)
Нет, про Юрия Шевчука и его группу DDT.
Понял, у меня, судя по всему, Шарп головного мозга.
1. аутосорс
2. обмазать монетизацией
Добавил в свой масленковский словарик.
У Uncle Bob есть на тему TDD заметка в его блоге с рекомендацией посмотреть Simple Made Easy.
Если резюмировать, то тесты не должны заменять вам мышление.
А на тему наброса на паттерны и все такое есть ответ там же в его блоге.
P.S.
Simple Hickey называется. Solid Relevance по второму.
Анкл Боб уже много лет консультированием занимается, конечно у него будут ответы на любые набросы в адрес предлагаемых им подходов
Ого, я думал у меня г..код, а тут по сравнению с линуксом у меня ванильное мороженко
я не совсем согласен, что паттерны не нужны так же как и солид. Согласен, что это больше зависит от команды, где сильная команда, где слабая команда. Слабой команды может это и не чего и не нужно и проталкивать туда это тоже не нужно. Команда малу по малу развивается и сама до этого дойдет. Сильная команда будет это все использовать, потому, что они знают как. Но и перебарщивать не нужно, так как в долгой перспективе это только вредит, загоняем в узкие рамки. Но большинство ботовых задач они решают на ура. Паттерны это больше язык между програмистами. Что бы можно было понять друг друга, без труда, что он там написал и для чего. Упрощает жизнь.
Как будто если ты откроешь книгу посреди сюжета ты дохрена поймёшь
7:51 вот это каминг-аут! 👍
Какой договор, если один старый мужик просто сказал:"ну вот смотрите, так надо делать, мы договорились"?
Все эти классные паттерны и подходы являются формой общественного договора среди бескрайнего сообщества программистов.
Extreme code: говорит про floppy bird
Видео на фоне: 4к 120фпс террабайтные модельки
"А там (в репозитории) монолитные микросервисы" (с)
Есть же ещё его величество - маркетинг, и если клиент заплатил за 10 микроскопов, то ты с такими рацпредложениями про молотки будешь либо уволен, либо будешь юзать микроскопы, как миленький =)
Линус выучил русский в Питере на хокее
Если честно, то для человека который написал на C хотя бы свой баш, всё это выглядит действительно очень читаемо.
Конечно. Все очень хорошо читается, хотя суть не улавливается. Но это и понятно в конексте исходников Linux. Видно все проверки начала строки, но что делает memparse - хз. Да еще и указатель 'p' она каждый раз изменяет хз куда. Так что, нужно ковыряться дальше внутри по этому спагетти, чтобы что-то понять по сути, а не по синтаксису. :)
Запомните, чем больше тестов тем больше тестов ☝️
Это шедевр! Когда реклама обрамляется видео, якобы несущие смысл...
Это же гениально!!! Так победим этих чертовых инфоциган! Каждый ютубер пилит видосы по 5 минут где 4.59 минут рекламы.
Пусть бюджеты горят как сентябрь в 2007!
Простите но не 4.59 минут, а 4.99 минут. А то это издевательство над пользователями JS и Питухона.
в какой-то момент показалось, что это говорит не автор, а мой собственный внутренний голос
Я видел человека, который дабы "защитить" свой всем "нужный" код решил кодировать переменные в двоичную систему исчисления. И это он называл самым защищённым в мире кодом, и глубоко не понимал, почему сотрудники Microsoft не используют его методы (・o・)
Кодировал названия, что ли?)
@@RomanShevtsov-pr6go да)
да потому что компилятору да рантайму посрать на твои названия, они могут запросто таблицы символов не получать
Гвозди кстати можно забивать разными способами) многие из которых даже не понять
Усвоил (нет) для себя одно правило, если видишь что надо сделать нормально - делай нормально сразу, никаких ТУДУ, "потом отрефакторю" и "мне тут все понятно и так".
Под каждую задачу придуман свой максимально приспособленный под неё инструмент.
Вся эта обмазка нужна, чтобы договариваться было проще и от проекта к проекта ты не был в шоке.
Как-то я программирую и задаюсь вопросом - а почему я пишу код и внедряю фичи быстрее, чем мои знакомые чуваки.
Оказывается, они пишут юнитесты, зависят от паттернов, планируют какие-то неебически сложные структуры кода, правят миллион багов, пишут прототипы, миллионы коммитов и веток в гите, и так далее и далее. В итоге у них всёравно гавно получается, только больше сил потрачено, честное слово...
Дада. Причем правят миллион багов они за такими скоростными мудаками без тестов и коментов )
@@АнтонДудкевич ну кто-то по итогу свои проекты заканчивает за 3 года, а кто-то за 5 не может закончить.
Курсы гиперказуалок.. Пацаны, Сакутин будет недоволен :)
Судя по всему автор живет в мире ненадежных, но быстрых в разработке мвп, а не серьёзного продакшена
Чат ботики его стек
Некоторые правила чистого когда нарушаются в методичках, которые утверждены стандартом (пример - Керниган, си). Там функция делает ретёрн больше одного раза. И что делать?
Вы точно понимаете, что означает термин "стандарт" применительно к ЯП ?
@@princessmary5556 Ну, ты меня, если честно, разуверил :3
Если число пользователей API достаточно велико, то неважно, что вы обещаете в контракте : любое наблюдаемое поведение системы будет зависить от чьих-то действий -- Закон Хайрамаа
я почуствовал спокойствие
Основная проблема при забивании гвоздей микроскопом заключается в том, что при этом микроскоп необратимо меняет свою функцию на молоток
Но факт остаётся фактом - можно, утверждение верное.
А node_modules уже скачался?
ну да, леликс наговнакоден, с открытием тебя
Посмотрел и чувствуешь себя хорошо ))
В TDD заваливается тест для любого изменяемого кода, это часть флоу
Это крайность, "для любого добавляемого кода" это разумный компромисс
@@Torbjorn-ph7rt тдд не работает, если ты запускаешь тест после внесения изменений в тест, а он проходит.
Чистый код бывает, но пишут его ювелиры из мира программирования
То есть адекватные люди
Братан хорош! Давай вперёд! Контент в кайф! Можно ещё? Вообще красавчик!
Так-то я согласен. Но есть одно но.Вот допустим я пришел с похмелья, задача - срочная, сроки горят. Я ее сделал. Так вот. Без тестов я уже через 3 месяца не буду помнить что я вообще делал, как оно работает и вообще.
Ну, допустим, из ИРЛ стори.Не с похмелья, но суть. Нужно было быстро написать компилятор модулей для одной системы сбора данных. Так вот, в тот момент я забил на тесты. По диагонали глянул спки и пошел фигачить. В итоге, все работает, офигенно норм. Через полгода нужно расширить. И я в душе не чаю, как оно блин работает, что произойдет если что-то изменить и т.д. Проще было прийти и переписать, благо там всего 5к строк кода, которые писались под 5 банками энергетика, чтобы успеть пойти с друганами в каточку покатать. И это, к сожалению - не такая из редкая ситуация лично по моему опыту кодинга. Конвенции это хорошо, но когда коммуникация происходит раз в полгода - все там давно либо забили на эти конвенции, либо оказывается что их как-то иначе воспринимают.
Ну и, да, 0 как норм - это как-бы совсем уж стандарт-стандарт, который ну совсем уж не шарящий не поймет. Странно было к нему цепляться.