Подпищек поставит лайк, отпищек комментарий P.S. А могло бы выйти 19 роликов по 30 секунд
@АртёмВитвиев3 жыл бұрын
А давай теперь 19 роликов по 30 секунд.
@Icmana3 жыл бұрын
Ля, ты ни чего не понимаешь, мог бы ролики записать по слову, а затем смонтировать видео нормально, а то за 9+ мин очень часто повторяешься, не соблюдаешь принцип единственной ответственности
@kianseibel22363 жыл бұрын
@@Icmana как боженька смолвил. Развелось ютуберов-самоучек :D
@NoldoWalker3 жыл бұрын
Как же жизненно (работаю с монструозным легаси документооборота). Во имя диалектики оставил и лайк, и комментарий.
@NoldoWalker3 жыл бұрын
@@Icmana сразу видно неопытного масленка, записываешь 32 буквы и нарезаешь из них какой угодно видос.
@yamuru223 жыл бұрын
«Собрались злодеи, обмазавшиеся своим большим опытом в ИТ. Набрали паттернов, лекций, и книг, чтобы оберегать их оргию. И пируют»
@neaf1sss3 жыл бұрын
Ахахахахах. Лев Толстой о программировании)
@batfist65953 жыл бұрын
XD
@NerZul121_plus3 жыл бұрын
@@neaf1sss нет, блин, волк худой
@neaf1sss3 жыл бұрын
@@NerZul121_plus нет, блин, Сернатурал Зименен
@inbuckswetrust73573 жыл бұрын
Это их хлеб как и хлеб афтора пороть горячку ;)
@notthugnotthug3643 жыл бұрын
19 роликов по 30 сек будем считать так
@baurerzhan69683 жыл бұрын
17, вычтем 2 ролика, там реклама каждые по 30 секунд
@АлександрПотеруха3 жыл бұрын
Ну смотря с чего начать считать их вполне 20 может оказатся
@subscriberswithoutvideos-tv3lg3 жыл бұрын
может 38 по 15 секунд?
@vladislavb54713 жыл бұрын
У сферы ИТ 2 врага: фронтендеры и бэкендеры
@NoldoWalker3 жыл бұрын
еще фулстаки
@artursword32883 жыл бұрын
да и вообще все эти "кодеры" ЗЛО, я ЩИТАЮ что в команде должны быть ТОЛЬКО бизнес аналитики и МАНАГЕРЫ, код писать в 2021 ЧОООО??? МОВЕТОН.. главное же ЯЗЫКОМ уметь чесать (так сказать софтскилзы развивать) ;))))))))))))
@witetigre13 жыл бұрын
@@artursword3288 Не так. "Код писать в 2 ка 21 ЧТООО???"
@lacrimamoza3 жыл бұрын
как автотестИр целиком и полностью согласен - наговнокодят, а мне потом свой говнокод писать
@antonchehov55363 жыл бұрын
Ещё и хрюши.
@chumakov_mikhail3 жыл бұрын
Все эти правила, принципы и парадигмы программирования полезно знать, чтобы понимать, где и как их нужно сознательно нарушить.
@monlewi19763 жыл бұрын
top
@НикитаБелов-ч7м3 жыл бұрын
Как сказал Барбосса, кодекс - это свод указаний, а не жестких законов xD
@boriskorotaev12793 жыл бұрын
Золотые слова
@KravchenkoIgor3 жыл бұрын
То, что тесты прошли успешно, означает одно - тесты прошли успешно.
@Time2paw3 жыл бұрын
и тесты выглядят как if (true)...
@QmanKUCHER3 жыл бұрын
А как же тесты хуево написаны?
@YuriiKratser3 жыл бұрын
Ахахах
@bytefu3 жыл бұрын
А твой комментарий означает, что на русском языке можно формировать предложения.
"Пакеты с нпм догрузим в следующих видосах" (с) Вы сделали мой день) So true.
@flatl1ne3 жыл бұрын
Кто то в курсе почему на винде с нпм все так долго грузится, на линуксе бы секунд 10 заняло?
@andor19043 жыл бұрын
@@flatl1ne а что ты сравниваешь? Свой ПК на винде и Линукс на сервере? Мне кажется, в таком случае банально интернет побыстрее на сервере будет
@esper_lvl49003 жыл бұрын
Там от проца, интернета и оперативы зависит. Ну и от кол-ва пакетов, наличия кэша и package-lock.json
@flatl1ne3 жыл бұрын
@@andor1904 я сравниваю винду на своем пк и линукс на своем пк , про сервер речи не было
@mikalai_root3 жыл бұрын
Во первых, если HDD - страдай...
@SergMirny_yt3 жыл бұрын
Про банан и обезьяну с джунглями - орнул вслух
@atla5_3 жыл бұрын
Автор, не слушай дурачков-хейтеров, видос получился действительно зашкварным 👍
@maxwellcoding3 жыл бұрын
Легенды говорят, что сборка от create-react-app до сих пор скачивается...
@StrifeTheHorseman3 жыл бұрын
1:15 настолько залип на задний фон что пришлось три раза отматывать назад чтобы вслушаться в то о чём ты говоришь)
@uvy.studios3 жыл бұрын
Вот я тоже. В первый раз даже забыл, что слушать надо.
@testchannel32653 жыл бұрын
на этом фоне тот еще говно-код, многострочными стрингами компоненты строятся, превратили js в php первого уровня начала 2000-х годов
@artiomta433 жыл бұрын
Блин я тоже на паузу поставил посмотреть что за дерьмо то такое, да в целом код прям такой треш что я глазам своим не верил, хотя они уже столько повидали
@ИапГоревич3 жыл бұрын
@@testchannel3265 Хех
@ИапГоревич3 жыл бұрын
@@testchannel3265 Не думаю, что будет лучше: const header = document.createElement('header'); const Name = document.createElement('h1'); Name.id = "header__Name"; header.appendChild(Name); document.querySelector("#wrapper").appendChild(header)
@djhenya943 жыл бұрын
3:04 этот ls сделал мой день))
@MsDimkadrol3 жыл бұрын
Причем больше всего там рассмешило про рельсу ))
@olegmak45412 жыл бұрын
Великий Джон Кармак, которого уж точно сложно упрекнуть в плохом коде, игнорил принцип DRY, он дублировал и захардкоживал функции в высоконагруженных участках, для улучшения стабильности и производительности.
@liletl30833 жыл бұрын
Люблю зайти на этот канал, черпнуть лопатой умных слов и пойти хвастаться в жизни.
@КонстантинСайков-ж9л3 жыл бұрын
00:47 - найс коммент перед кодом))
@ЕгорБаранов-х8ъ3 жыл бұрын
Забавно узнать, что принцип драй это про недопустимость копипаста из одного проекта в другой(общие библиотеки от лукавого), и ни чуть не преследует цели менять бизнеслогику в 1 месте, а не по всему приложению искать возможные наведённые баги. И что домейн дривен дизайн с тест дривен дизайном это зло. Походу никакой я не программист. Пойду устроюсь на автомойку. Спасибо автор, что открыл глаза)
@backoff67763 жыл бұрын
1. DRY. Мимо. Это означает, что у тебя один функционал будет реализован в двух местах. А потом твой напарник(Вася), будет в этом функционале фиксить багу. В классе А с помощью костыля Б. А потом Другой твой напарник(Петя) будет фиксать ее же, но в классе Ц с помощью котыля Д. А еще через пол года потребуется расширить этот функционал. И в этот момент вам обоим можно будет вполне заслуженно прописать строгий выговор. С занесением в грудную клетку. От того "воина легаси кода", который будет это дерьмо разгребать. Касательно валидации пример убогий. Ибо DRY не относиться к макроархитектуре. 2. Ух ты... я аж расстерялся, за что тебя хаить. Ну... разделим пункт на подпункты. 2.1 Ну можно было например использовать декомпозицию, придерживаться пунктов S и I из солид, по возможности не злоупотреблять абстракциями, заменяя их композицией и тогда у тебя бы небыло лапшеподобного год-объекта, от которого все зависят. 2.2. Не кладем на DRY. Признаемся ПМу, что налапшали дерьма и архитектура поплыла. Далее уже действуем по ситуации в зависимости от ресурсов и времени. В идеальном мире- вооружаемся книгой "Рефакторинг", внимательно читаем и действуем согласно рекомендациям. В реальном - скорее всего костыляем и совокупляемся со своими же костылями,слезно прося прощения коллег, т.к. это наша вина. 2.3. Да, разница есть. Она вытикает из определения юнит-тестирования да и вовсе из здравого смысла. 2.4. А вот как раз принцип Лисков твоего примера не касаеться никак. А это, между прочим азы, воин ты наш... легаси кода) 3. Ну так ты вынужден разбираться с говно-кодом, состряпанным другим воином легаси-кода, который относился к своей работе так же, как и ты. Разве это не повод задуматься? 4. KISS противоречит любым принципам, если упарываться в крайности и искать, к чему бы докопаться. Ну или как бы оправдаться. Тут дело в том, что "Simple" - понятие растяжимое и однозначного ответа, где же заканчиваеться "Simple" и начинаеться "нихера не Simple", тебе никто никогда дать не сможет. Ты же сейчас банально манипулируешь терминологией. 5. Оо... добрались даже до "Что такое хорошо? Что такое плохо?". Глобальный объект - один из возможных способов решения ряда задачь, связанный с рядом недостатков и рисков, однако в некоторых случаях может оказаться более оптимальным, чем его альтернативы. Только и всего) Те принципы и практики, о которых ты так снисходительно говоришь, придуманы гораздо более умными дядями(и тетями) и как раз для того, чтобы выполнять свою работу с минимальным уровнем последующего гемороя и спать по ночам. Залезть в жопу по-глубже, чтобы позже героически из нее выгребать, конечно романтично. Но затратно по времени. А время - деньги. А бабки, как известно - лучший best practice.
@ПростоТанцор-ф9е3 жыл бұрын
чувак, ты рили воспринимаешь в серьез этот троллинг?)
@backoff67763 жыл бұрын
@@ПростоТанцор-ф9е , ну как тебе сказать... Я понимаю, что мамин Линукс Торвальс похайпиться хочет и раздувает холи-вар. И скорее всего прошел бы мимо, если бы не засилие таких вот горе-гениев, за которыми приходиться все переделывать. По моим наблюдениям, хорошо если 9 из 10 "специалистов", с которыми приходиться работать(ну или за которыми приходиться разгребать), как то так и относятся к своей работе. Надавил на больное короче)
@maratiakupov47303 жыл бұрын
Брат, не пропадай так надолго... Ты сохраняешь во мне любовь и ненависть к кодингу. Дай бог те здоровья
@baier54733 жыл бұрын
Ладно, пересмотрю старый шедевр
@DrForse3 жыл бұрын
Мне кажется, DRY существует не для того, чтобы писать меньше кода, а чтобы потом можно было вносить правки в одном месте, вместо того чтобы сначала ИСКАТЬ все места, где нужно внести правки, а потом в каждое из них вносить эти правки. У меня у самого сейчас есть проект, в котором есть определенные типы объектов и модели, которые копируют друг друг во всех трёх компонентах, + в типах кое-где есть функционал, которого нету в других компонентах... И в общем-то, я вполне мог бы объяснить, почему так, а не иначе (ну или нет), но суть в том, что когда вносил недавно правки, добавляя дополнительные поля в таблицу в бд, мне пришлось поменять 6 классов вместо двух. Ну так это мой код, так что было просто, а если бы кто-то другой с ним работал, то он мог бы и не сразу понять, почему же алхимия выкидывает ошибку об отсутствии полей в бд, к примеру, ведь он же все поменял, что нужно 😅
@artursword32883 жыл бұрын
ты прав, а автор или тупит и ему стоило бы НЕРЕЧИТАТЬ профильные книжки, или специально ХАЙПИТ, и несёт околесицу.. там если по пунктам разобрать что он нагородил, то вопросов к его ТЭЗИСАМ тьма.. жаль что это смотрят неокрепшие умы.. и могут поверить ему.. ну если автор абстрактный уровень не различает и сравнивает KISS(вынос абстракции в атомарную единицу не ломает его уж точно) не пойми с чем.. мне страшно за будущее.. тут скорее подходит слово ПЕРЕУМНИЧАЛ...
@DrForse3 жыл бұрын
@@artursword3288 нууу, чё так резко, его видосы же процентов на 70 рофлы 🌚
@AndreyX-i6b3 жыл бұрын
В смысле видео более 30 секунд?
@ryazanov133 жыл бұрын
1) Повторение код вредно, не тем что ты описал, а тем что при изменении в одном месте, придётся менять код во всех копиях, которые неизвестно где, не известно сколько их и вообще об их существовании не известно. Твой код с 3мя модулями, не понял в чём вообще проблема, есть 3 модуля и все они используют одинаковую зависимость, понадобилось что бы один из них использовал другую зависимость - пусть использует, каким образом это "укокошит" остальные модули? 2) kiss вообще не имеет прямого отношения к практикам/подходам к программированию, этот принцип говорит, не создавать сложные системы, SOLID именно на это и нацелен. Дополнительный класс никак не делает систему сложной, не путай большую систему и сложную. Может быть здоровенный и простой проект, и может быть 100 строк обфусцированного кода. 3) Можно пример, почему в ооп ты должен обезьяну с джунглями банану добавлять? Всё отличие от функционального программирования, что функции с одинаковыми конструкциями use можно объединить в одном классе, что позволяет прокинуть один класс с общим состоянием, а не кучу методов с неизвестно какими данными. 4) глобальные переменные всегда зло - используй конфиг и не будет никаких проблем, легко можешь конфигурировать свой проект. 5) "определенный паттерн для REST" вообще непонятно в чём суть проблемы, какой глобальный контекст? Передаётся http запрос. Если что, большинство фреймворков (по сути все) ничего общего с ООП не имеют.
@ivangordeev63563 жыл бұрын
Осталось решить, можно ли считать синглтон глобальной переменной или мирно разайдемся, плюнув друг другу на спину?)
@Rameronos3 жыл бұрын
Слово public там есть? Есть. Static есть? Есть. Ну вот и всё.
@ivangordeev63563 жыл бұрын
@@Rameronos :D
@gradovvladimir43153 жыл бұрын
Дык вроде как синглтоны юзать не комильфо как раз из-за того, что по сути это глобальные переменные, не?
@ivangordeev63563 жыл бұрын
@@gradovvladimir4315 , Вы не правы, синглтоны это синглтоны, а глобальные переменные, это глобальные переменные. Синглтоном может быть какой нибудь инстанс класса, скрывающего сложную реализацию. По архитектуре наличие единственного инстанса может быть обязательным условием, например абстракция для подключения к бд
@gradovvladimir43153 жыл бұрын
@@ivangordeev6356 , а почему глобальная переменная должна быть обязательно примитивного типа? Это также может быть какой-нибудь сложный класс с нетривиальной реализацией
@YegresAL3 жыл бұрын
Подожди... Т.е. в программировании нет Самого Лучшего Паттрена? Это что... нам думать надо когда мы код пишем? А ну на вилы его!!!!11111ОдинОдинодин
@Gameplayer550553 жыл бұрын
Лучший паттерн это синглтон XD
@YegresAL3 жыл бұрын
@@Gameplayer55055 хиханьки хаханьками, но синглтон реально крутой паттерн... За все годы что я в этих ваших софтваредевелоперах я видел только одну откровенно ужасную реализацию синглтона - когда синглтоном была UIView которая встраивалась в соответствующий UIViewController. Синглтоном, God-обжектом и глобальной переменной с доступом через макрос. Забавно что все работало ))))
@bergest43483 жыл бұрын
@@YegresAL По идее синглтон полностью нивелирует необходимость глобальных переменных. Да это чуть длиннее в реализации, но нет вопросов - куда запихнуть синхронизацию, и проверки чтоб лучше дебажилось.
@dimdimich23563 жыл бұрын
@@Gameplayer55055...который тоже "внезапно" стали считать антипаттерном 😁
@Gameplayer550553 жыл бұрын
@@dimdimich2356 смотря где
@горшочек-ч9ж3 жыл бұрын
О программировании не знаю абсолютно ничего, но нравится подача автора. Лайк
@ВладимирШкиль-х9ю3 жыл бұрын
Так ну, применение того или иного принципа программирования зависит от контекста !) Любой код можно писать в определенном контексте и при определенной задаче:)
@apristen3 жыл бұрын
"если тебе нужен банан, то приходится мутить ещё и обезьяну с джунглями" - X-D)))) жизаааа!!!
@Джи3653 жыл бұрын
Чёт я вспомнил хентыч "стрелочка не поворачивается" Да, за счёт того, что я часто ищу хент на рандом я получил абилку "знать хентыч на любой случай жизни"
@vryaboshapko3 жыл бұрын
Вообще всегда понимил DRY как способ имплементации SRP. Когда одна фича описана в одном месте, её проще править, нет риска забыть, что поправил только 2 места из 3. Соотвтественно, идея про экономию времени выглядит странно. К тому же, DRY часто требует больше времени, чем копипаста, потому что надо же ещё подумать как его поабстрактнее сделать.
@Skeleton5973 жыл бұрын
Видос на 9,5 минут? Значит ли это, что следующий ролик будет совсем скоро, в августе?
@Psyh-su3et3 жыл бұрын
Я не "отпищек", лайк тобі, та всілякого успіху. Дуже люблю твій канал. Як казав Е=мс^2нштейн, людина тоді розуміє питання, коли може пояснити його дитині простими словами. А твоїми словами, це не просто якесь там галіме розуміння - це вже мистецтво. Я, до речи, теж тепер знаю пітухон. Дякую!
@stas_khavruk3 жыл бұрын
Наконец-то он нашёл рекламодателя для 10минутного видосика.
@egos_ua3 жыл бұрын
люблю видосы, где у тебя бомбит. Как бы вдохновить на побольше таких? ко-ко-ко, ко-ко-ко, ты во всем не прав! (как смог)
@tongenq3 жыл бұрын
Инкапсуляция это сокрытие
@nickmage1233 жыл бұрын
Ангуляр лучше реакта
@artem_doronin3 жыл бұрын
Пхахх))) Ты постарался от души))))
@sn1cka_3 жыл бұрын
Сахар не нужен и нужно все делать ручками и циклами. Алгоритмы же знать надо
@dmitryvarnavskikh56483 жыл бұрын
@@nickmage123 Джейквери лучше ангуляра, а html на самом деле язык программирования
@I2482 жыл бұрын
Топ! Твори дальше! Уникальный контент!
@ievgenk.89913 жыл бұрын
Я очень часто такое поведение наблюдаю со стороны "трушных" кодеров. Раз уж такая пляска то подкину парочку личных кейсов :) * Кейс с бекендщиком бекендщик: "почему на фронтенде такой зоопарк, почему все решения не сводятся к одному, почему так много фрейморков." [тем временем на беке: куча операционных систем, куча платформ, куча языков, куча фреймворков под каждую платформу, миллион баз данных, триллион сишных либочек, драйверов и прочего.] * Кейс с дотнетчиком дотнетчик: "Почему фронтенд такой лагучий, какого фига фронтендеры не пишут всё на ванильном js, зачем они подгружают фреймворки, надо экономить трафик и думать про рокет-саенс перформенс. Электрон - дно, зачем вообще с таким работать." [В дотнете выходит Блязор, который тянет "пол" дотнета на фронтенд, втуливает WebAssembly интероп с js - и все это дело лагает и грузится по пол минуты с 3G интернетом. И в довесок майки анонсировали, что теперь десткоп аппки можно писать на Блязоре (но уже без WebAssembly которое оказалось "не нужным") обернутые в Электрон] любой дотнетчик: "одобрительно кивает головой и просит манагеров везде юзать Blazor." * Кейс с ООП(java-like) и адептом чистого кода, искренним последователем дядюшки Боба: оопырь: "ООП это святыня, оно помогает писать простой и надежный код и в современном программировании без SOLID+kiss+dry+yagni ваще никуда" [Делаешь замечание недооцененному архитектору, что в java/C# ты фиг расширишь свой метод, если тип аргумента принимает АйЖивотное, а ты импортиш Петушка из сторонней либы и единственный путь это городить костыли из оберток-мимиков, нарушая всё, что знаешь про SOLID+kiss+dry+yagni] оопырь: "Приговаривает томным и сладким голосом ментора, что это здравое и полезное ограничение java, с#" * Кейс с программистами работающие с настоящими типизированными языками аля java, C#, go. тру тайпер: "typescript это дичь, он unsound, в рантайме нет типов - они не настоящие" [Говоришь что ts код (в сотни тыщ строк) c включеном флагом strict и написанный с ФПшечкой в голове - не падает в рантайме неделями и месяцами в отличии от бека на с#/java/go который регулярно раздвигает ножки перед нулрефами] тру тайпер: "но типов в же в рантайме нету..." Хотелось бы еще больше примеров накидать и покрасивше расписать это всё, но надо идти гавнокодить. gl hf
@notbad81703 жыл бұрын
Жиза на все 100%, мы случаем не в одной команде работаем?
@alexkluev5613 жыл бұрын
Про кейс с ооп рофланул с того, как классический GoF паттерн "адаптер" назвали костылём XD
@ievgenk.89913 жыл бұрын
Рофлю с того как "классические" паттерны которые выросли из-за необходимости решать проблемы возникающие из-за ограниченности java - возводят в абсолют. В динамически типизированных ЯП - половина из них не актуальны или видоизменяются в сторону упрощения, а в ЯП с более продвинутой системой типов - адаптер в данном случае не нужен. Для джавушки родной - без оберточек никуда, но это не отменяет что - это попросту заплатка для языка и никакой ценности в виде ускорения производительности, уменьшения потребляемой памяти, увеличения надежности, упрощения программы - это не несёт.
@ВладимирБелоусов-г2ъ3 жыл бұрын
@@ievgenk.8991 Ценность это несет за счет того, что не дает совершать миллион других ошибок, в отличие от ДЯП
@bukkaneer3 жыл бұрын
Эээээ... Кейс с дотнетчиком у нас случался с завидным постоянством. Этот дотнетчик наш ПМ. А недавно он открыл для себя волшебный мир js-фрейворков и от его примеров и ценных указаний на vue наш фронтовый чат (где одни ангулярщики) переполнялся матюгами.
@yedilkalemshariv50393 жыл бұрын
Братан хорош! Давай контент! В кайф! Можно ещё?! Вообще красавчик!!!
@mrLukas-du4xd3 жыл бұрын
Наконец-то Колян на сцене канала!
@xxlagr13 жыл бұрын
Есть огромная разница между глобальной переменной а-ля window.mystateobject и Flux. Например, в иммутабельности. А так в пример и базу данных можешь привести, она тоже доступна в любой момент. Проблема глобальных переменных не в том, что они доступны отовсюду, а в том, как они изменяются.
@basilsoloview2 жыл бұрын
Зачем эти недомолвки и полумеры! Проблема ЛЮБЫХ переменных в том, что они изменяются.
@hrayrbarseghyan54533 жыл бұрын
про функцию, где надо в одном месте чтоб работало немного иначе - жиза. решается так - надо чуть чуть пошевелить мозгами, и соблюдать инкапсуляцию и принцип единой ответственности, чтобы код был максимально модульным. и самый главный совет - используй сука мозги!
@Игорь-ь5у4б3 жыл бұрын
Да, натерпелся я однажды от таких ctrl+c, ctrl+v. Следующей задачей после данного действия прилетает задача где нужно внести изменения и в старый и в новый скопированный код. Ну да зато у нас сущности не появилось :D. И ладно если человек копипастер еще работает и случайно заглянул в ПР, что бы сказать где поправить. А то ведь бывает, что такие "ценные кадры" сваливают из компаний
@пхвлхн3 жыл бұрын
Моргни, если тебя Слидан в заложниках держит
@h_it3 жыл бұрын
их двоих дкржат в одном подвале
@НиколайСушков-е5ж9 ай бұрын
07:05- недостатки глобальных переменных: ухудшают потокобезопасность, рискуют быть собранными в мусорку, становится причиной багов (потому что к ним есть доступ если любой части приложения).
@MasterSergius3 жыл бұрын
Походу, я отстал от мемчиков, узнал только "Ярик, бачок потік"
@АлександрСериков-ч5ю3 жыл бұрын
БЛЯЯЯЯЯЯЯ. Какая подача! У меня очко порвалось уже от диаграммы спагетти-костыль))))) Просто, Бог!!! Ору)
@viksench64473 жыл бұрын
не, ну ты ваще красавчик) и слушать оревно, и солидарен со всем)
@artursword32883 жыл бұрын
4:09 DRY принцип скорее о КЛАССИЧЕСКОМ программировании а не о разделении клиент сервер, где особо грамотные маслята вместо выделения в функцию по сути ОДИНАКОВОГО КОДА его мажут толстым слоем по углам, потом такое саппортить невозможно, ибо нужно сперва весь код просмотреть, и в каждом углу сделать исправление.. так что Автор вводит в заблуждение .. уж лучше ЧИТАЙТЕ КНИГИ, а не по ютубчику учитесь)))) паттерны никогда не были прям БЭСТ ПРАКТИС, они скорее были набором наиболее распростроненных решений на наиболее часто возникающие задачи, и для УНИФИКАЦИИ решений решили их разъяснить, ведь когда ВСЕ кодеры в твоей ПАТИ говорят на одном языке и работать проще ...
@НикитаЗамалютдинов3 жыл бұрын
Вижу жабаскриптера, готовлюсь ловить лулзы от потока говна, а видеоряд шикарно дополняет это
@ДенисМельник-в5ю2 жыл бұрын
Как же я люблю твои видосы! Какой же кайф. Я ценитель такого юмора.
@VitaliyBrizhan3 жыл бұрын
Чувааааал! Ты просто нереален! В этом видео все прекрасно! *яплакаль*
@MyMrdmitry3 жыл бұрын
Как всегда. В любой области есть люди которые понимают что, зачем и как работает, и те что следуют за авторитетами не понимая что всё надо выбирать в зависимости от задачи.
@alexandermokryshev53973 жыл бұрын
Комрад, DRY нужен вовсе не для того чтобы "не делать двойную работу", писать отдельный код для каждой специфической ситуации гораздо проще и быстрее, чем заморачиваться с абстракциями и наследованием. DRY нужен для того, чтобы при внесении изменений, в больших проектах, не искать "вручную" все места, где ты применяешь логику, которая должна работать строго одинаково. Крайне неприятно, когда к тебе приходит бизнес и говорит, что ты сам не разбираешься в собственной системе. Точно так же и юнит-тесты, они нужны не для красоты, а для того, чтобы при изменении этих самых, общих абстрактных классов, моментально увидеть - какие конечные модули перестали работать так, как от них ожидают, чтобы не вычитывать это вручную в коде и не держать это в голове. Чтобы не возникало ощущение "двойных стандартов" и чтобы самому оставаться адекватным, надо перед применением любого устоявшегося подхода или паттерна думать - "какие конкретно риски заставляют меня это делать?". Если ты понимаешь свои риски, ты понимаешь - зачем тебе эта доп нагрузка, и в какой степени она тебе нужна. PS Я понимаю, что у тебя "стиль пАдонка" и ты отыгрываешь роль, но на самом деле правильная поставленная речь, манеры и позитивная коннотация звучат намного стильней, умнее и дороже:) Посмотри для примера канал - "Физика от Побединского", насколько этажей ниже он бы выглядел, если бы общался как ты?
@mykola_antal3 жыл бұрын
Об этом автор тактично умолчал :)))
@alexandermokryshev53973 жыл бұрын
@@mykola_antal ну он не со зла:)
@demid088web2 жыл бұрын
Начал за здравие, кончил за упокой!
@Анатолій-я4и3 жыл бұрын
Я сначала подумал что Добряк в кодинг подался. А это не Добряк :D
@ЙцукенПетрович Жыл бұрын
Про DRY и злополучную дупликацию кода принцип на самом деле простой. Разные сущности с точки зрения логики работы должны быть представлены разными элементами кода, даже если эти элементы кода совпадают на 99%. Если получится, можно совпадающие части вынести в отдельную утилитарную функцию/класс, но и за этим не стоит охотиться. А не наоборот, создавать одну сущность, параметризуемую разной логикой. Т.е. например, если тебе нужно работать с массивами строк (напр, список людей) и чисел (индексы или даты), и оба нужно сортировать, то у тебя должно быть 2 несвязанных класса со своим методом сортировки в каждом. А уже в этих методах можно какой-нибудь qsort вызывать. Как не надо: создавать один класс КСортируемыйСписок с подклассами для каждого вида списка. Мне самому эти идеологизированные кодеры уже изрядно поднадоели. Я обычно их советы просто игнорирую и делаю по-своему. Благо мне как сениору это позволяют.
@ВладимирБелоусов-г2ъ3 жыл бұрын
Чувак, если ты не пишешь тестов в своем коде, ты либо лупишь супер мега стартап, который возможно выкинешь через неделю и не собираешься поддерживать вообще, либо колупаешь сайты-визитки. По поводу того же Dry - копипаст разрешен, если он имеет другое семантическое значение в данном случае. Тогда нет смысла пытаться объединять разнородные, пусть и похожие операции в один метод, потому что смысл его совершенно другой в разных частях кода. И KISS ты тоже не понимаешь. Держать простым - это значит держать в соответствии с бизнес-логикой и бизнес-сущностями. Опять же, если у тебя есть похожие, но различные по своей семантике сущности, то их можно хоть миллион штук наплодить, и это не будет нарушением принципа KISS.
@Aspirin4uk123 жыл бұрын
Дак в случае flux и middleware api есть одно явное отличие - эти "глобальные" переменные передаются аргументом функции, а не просто идет к ним обращение из кода. Ну и собственно и мутятся такие штуки спецом иммутабельными, чтобы фантомные баги не ловить.
@MaChEtE-yn5cm3 жыл бұрын
я программирую микроконтроллеры, что я здесь делаю ???? Много какой-то хуйни в этом вашем не МК программировании. Процедурное программирование - топ ! ко ко ко забыл сказать ;) Вроде ко ко ко- на языке программистов ПК это - абсолютно согласен ...
@gunnargunaxe3 жыл бұрын
Я вообще в Quartus'e для Альтеры схемки рисую, но посидеть с попкорном посмотреть интересно на всю эту абстрактную возню)))
А теперь обмажься MISRAC и попробуй тут вякнуть что глобальные переменные это хорошо))
@250-p6i3 жыл бұрын
Глобальные переменные это хорошо, удобно и главное быстро работает! Просто пишите на ассемблере и у вас не будет проблем.
@buellxb_rider3 жыл бұрын
Самый прекрасный видовс за последнее время. ржали всем офисом
@dj-a3 жыл бұрын
Слёрм?) Привет от зрителей Футурамы!)
@kiowle3 жыл бұрын
Шутки шутками, а мне реально чуть ногу сервером не оторвало. Спасибо врачам - без осложнении. Только техилый шрамчик теперь ношу на память. Правдa, база там крутилась Informix, а не постгрес.
@11МаНаХ113 жыл бұрын
Половину слов не понял, но слушать прикольно)))
@trollol25633 жыл бұрын
А интернет так и не скачался...
@ЮрийПлохов-к2в3 жыл бұрын
Ну в книге по паттернам, которую я читал, так и говорится, что паттерны увеличивают кол-во классов и могут усложнить код. Причем говорится это в книге много раз, чтобы думали прежде чем паттерны пихать куда непоподя
@asisu28773 жыл бұрын
вот кстати да, часто вижу в чужом коде обычный синглтон, который обзывают как-нибудь типа context, module или subsystem - но в корне, это все тот же синглон. Назвали по другому и уже типа никто не заметит
@iliasalaur3 жыл бұрын
4:48 А как насчёт сделать абстрактный класс в котором будет реализовано большее число методов а то что нужно изменить будет в другом классе который будет наследоваться от того абстрактного класса? Не знаю как в C# или Java, но на плюсах я именно так и делал и вроде было норм. Типа, и код не повторяется и все работает так как надо
@TooStrongPlayerException3 жыл бұрын
Лайк за профессора фортрана на 5:33 , олды помнят
@monlewi19763 жыл бұрын
искал этот коммент
@smair5183 жыл бұрын
4:18 раньше лапшу на уши вешали а щас на костыли...
@alexpunch30363 жыл бұрын
Забеись. Чотко. Правда, половины я не понял, но мемасики сделали своё дело, и я ржал так, как будто в теме 🍄
@marektop56763 жыл бұрын
Я просматриваю этот видос ста тысячным))
@eam12193 жыл бұрын
как обычно, догматическое мышление не позволяет отказаться от всего, что неприменимо к конкретной проблеме. И да, в ООП отсутствует аналог Lambda Calculus, что позволяет вертеть принципы как угодно (Карделли не считается)
@IYaphtes3 жыл бұрын
По поводу лапши: просто оставляешь зазор для уточняющей реализации и клиентский (вызывающий) модуль уточняет реализацию лапши. Все просто жи, докорирование и композиция.
@javascripttask75563 жыл бұрын
Программист это когда с утра включаешь ПК, целый день пьешь кофе в офисе и рассуждаешь о паттернах, ООП, великом и малом коде с коллегами в офисе, жуешь SOLID, особенно тебе нравится как Барбара устроила "принцип постановки", вечером выключаешь ПК ни написав ни строчки кода, приходишь домой и говоришь: -как я сегодня устал!
@ReunikoStarwinged3 жыл бұрын
Глобальные переменные это не зло, но их отсутствие -- добро.
@DartElf003 жыл бұрын
Глобальные переменные, как по-моему, это не плохо. Главное их правильно использовать. Ну и не прикручивать их к какому-то сверхважному функционалу напрямую. Любой инструмент плох, если им не уметь пользоваться.
@TheCrossfor3 жыл бұрын
главное больше пафоса и гонора и любая шняга, звучит авторитетно
@Gameplayer550553 жыл бұрын
Именно ваши ролики мне помогли понять ООП :)
@win32filecoder.hydracrypt.153 жыл бұрын
Это ты про банан с обезьяной и джунглями?
@ImMeshlem3 жыл бұрын
Я только-только начинаю учить программирование и не понимаю 90% видосов, но контент такой годный, что даже без понимания происходящего интересно смотреть.
@the_eye85743 жыл бұрын
Жиза. Еще не понимаю почему фронтендеров засирают...
@artursword32883 жыл бұрын
лучше читай КНИГИ толковых авторов.. блогер ради хайпа путает молодых неокрепших бредом.. да слушать прикольно изза рофляночки.. да только 80% наговоренного тут полный бред изза непонимания блогером того о чём он говорит(ну по крайней мере полного понимания)
@VictorPlay20173 жыл бұрын
@@artursword3288 слишком толсто
@sergflutter92323 жыл бұрын
закрой ютуб и читай книжки
@V83nergy3 жыл бұрын
7:31 чуть сердце не остановилось, не пугай так, подумал кто в дверь стучит, снял наушники, проверил, вроде бы никого, опять смотрю видос, снова кто-то стучит. 🤣
@maxxxeeem3 жыл бұрын
орнул со вступления без использования оператора опциональной последовательности)
@ivan-ivanov-ivanovich3 жыл бұрын
Оооо из дурки теперь можно вещать больше чем на 30 секунд ?
@istpmncrft3 жыл бұрын
Ну он же не в дурке
@ifan1463 жыл бұрын
я, может, придираюсь, но DRY - про то, что копипасту придётся поддерживать. например, ты захардкодил значение, потом скопипастил, потом оказалось, что хардкод неправильный, исправил в одном месте и забыл про второе. а потом разбираешься, где ошибка. Как раз, наоборот, копипастить проще и быстрее (в момент написания кода). про момент с зависимостями : ну тут можно через наследование, которое ты вроде не признаёшь, а можно этот функционал декомпозировать и вместо переопределения написать функцию, которая будет работать по-другому либо сделать возможность через входные параметры разруливать логику ( флажок там какой ) , но это уже больше на костыль похоже а почему юнит - тесты через или? я думал, они нужны хоть как) ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ - ЗБС
@vyacheslav27503 жыл бұрын
На счет "store = глобальная переменная" не соглашусь 1. для взаимодействия со store нужно вызвать метод get либо set либо delete а это значит что мы уже можем отследить все обращения в store 2. по хорошему создают события которые изменяют данные, а это уже даем возможность не только отследить все изменения в store а и отсеять лишние запросы
@maksymkyryliuk4922 жыл бұрын
Да он просто любит байтить на комменты, человеку просто нечем заняться больше в этой жизни)
@pavelzloi3 жыл бұрын
Очень хорошее видео, тема раскрыта нормально, спасибо, подписался :)
@ueelalinn3 жыл бұрын
как бекэндер могу заявить, что пример с контекстом запросом - это действительно другое, ты не понимаешь... (го третий выпуск)
@Meskalitofly3 жыл бұрын
Мне понравилось конечно про сравнение глобальных переменных в js и flux но мазафака, сторы эти используются как правило в связке с нашими любимыми компонентыми фреймворками, а использование компонентного фреймворка автоматически избавляет тебя от необходимости плодить глобальные переменные специально или вообще задумываться о них, ну и кроме того flux как раз и позволяет избегать недостатков использования глобальных переменных.
@alexandermatveev67773 жыл бұрын
Ну поехали... РЯЯЯ Принцип DRY: "Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы". Поверхностное понимание принципа это "не дублировать код", а вот углубленное "не дублировать источники знания", т.е., например, не дублировать константы в разных местах, не иметь хардкод в запросах и переменную в коде, не писать отдельно документацию и doc block. TDD нужен не для того чтобы писать меньше кода, а для того чтобы быстрее находить проблемы в при его изменении и для более быстрого нахождения ошибок. KISS вообще такая философия, к которой дое*** совсем легко, потому что Simple разный, в зависимости от точки зрения. Про глобальные переменные ржу, фротендеры переизобретают всё заново по кругу год за годом чтобы зп ту зе мун двигать. В разговоре про REST почему-то к middleware перешли и request объекту. Request использовать как глобальную "переменную" не очень хорошая идея, это скорее связка источника данных и команды из которой создается response.
@edmm-113 жыл бұрын
Ничего не понял, но очень интересно. Лайк за FlexAir )
@doopath87373 жыл бұрын
Наконец видео от того, который смешной. Спасибо!
@KETVA_3 жыл бұрын
0:15 можно апелировать К ФАКТАМ, а ФАКТАМИ можно только ОПЕРИРОВАТЬ)
@Чьрьнъвранъ3 жыл бұрын
Я: Ну да, впринципе я согласен кроме первого случая Мой уровень владения слоим змеем: print ('Hello world ')
@chakchaky85213 жыл бұрын
По ходу не у одного меня в наборе "полезных" паттернов остался только кисс)))) Всё остальное для надувания щёк)
@Dadadadam9993 жыл бұрын
Самое весёлое помню, когда смотрел от какого-то ютубера получасовой ролик про вред сингтона в С# и угадайте, какой паттерн он использовал в своем следующем ролике при решении проблемы? :З Но вы не понимаете, это другое. :Д П. С. Если что не оправдываю синглтон, просто рассказал забавный момент.)
@navizheniy3 жыл бұрын
ну а что такого?) вред то есть, использовать то никто не запрещает))))
@olegafanasiev49763 жыл бұрын
Большинство видеороликов на Ютубе по коду так или иначе имеют ужасную архитектуру и не могут быть голов вписаны в проект.
@Dadadadam9993 жыл бұрын
@@olegafanasiev4976 Да это понятно.)
@Alexey.Lapshin3 жыл бұрын
Это вам еще повезло, что ваша нода в один поток работает
@TalosDx2 жыл бұрын
Kotlin MPP делаешь валидацию в общем модуле, и делаешь с ней что хочешь, хоть для покусанных девайсов компилишь. (Но мы же тут про легаси, а не хипстерство и нанотехнологии поэтому ты применяешь принцип да какой же зае.. и пытаешься выбрать нормальное решение исходя из опыта и советов колле... а да, удаленка же... ) Тут есть один момент, о котором ты ещё забыл, когда говорил в 4:49. Потребовалось поменять бизнесовую логику, чтобы модуль работал слегка по-другому в модусе C, а у тебя ещё A и B. Но это может всё сломать, плюс код пахнет. Поэтому ты делаешь копипасту. Спустя полгода или около того находят такой баг, что он ломает эс всем в проде. Ты такой ну баг и баг, фиг с ним и либо идёшь сам править и что-то там вспоминаешь про модуль C либо, что более вероятно это идёт делать другой человек.... Который в душе не имеет, где там что происходило с этими модулями. Правит либо только в общем модуле либо только в C. Баг поправлен, тестеры довольны, эс заказчика горит больше, чем прежде. Ведь было потрачено куча времени на поиск проблемы (ты же помнишь что это легаси?) На её решение, на тестирование, на релиз, на ожидание поставки релиза (легаааси, ставить будете недели две в лучшем случае) И по итогу баг фиксят по х2, а то и хN, где N количество копипасты. Принципы принципами, но их нужно хорошо помнить и знать почему они сложились именно так. И помня это можно, как использовать их, так и не использовать, когда ситуация этого требует. Но только в том случае, если это разумное решение. По итогу работа разработчика, наверное, одна из самой большой эс боли в мире ведь приходится принимать кучу сложных решений, помнить о тысячи вещей и это при том, что хипстеры там на этом вашем модном typescript, kotlin.js, etc пилят убойные приложухи, а ты пилишь гов... легаси. Которое эти же хипстеры пилили лет 10 назад. И ладно ты несёшь ответственность за свои решения и можешь их поправить. Но, когда ты несёшь ответственность за чужие решения, которые кхм ютюб забанит за такие слова. И даже абсолютный чайник мог бы написать лучше. То ты обращаешься к тем самым принципам, чтобы убедить РП начать рефачить свой и проектов эс. По итогу ты выгораешь и уходишь в очередную глубокую жо... то есть депресию. А, когда случился февраль и нормальные компании поливали с рынка рф то ты понимаешь, что хипстером ты не сможешь быть даже, если очень сильно захочешь.
@andreisuvorkov20233 жыл бұрын
В точку! Я такого насмотрелся на проде, что все эти умные книжки про то, как писать "правльный" код можно смело на помойку нести. На практике эти "умные" советы мало применимы
@navizheniy3 жыл бұрын
они применимы если изначально проект нормально делать)
@andreisuvorkov20233 жыл бұрын
@@navizheniy ага, только в природе таких не сущечтвует
@navizheniy3 жыл бұрын
@@andreisuvorkov2023 существует)
@endery29273 жыл бұрын
@@navizheniy ты их сам видел или так, теоретически существуют а там как есть?
@navizheniy3 жыл бұрын
@@endery2927 я тебе больше скажу, я на них даже работал)
@TopToro3 жыл бұрын
Так, сразу напишу, пока не забыл мысль) Про Dry и зависимый модуль. А что если сделать наследника зависимости, поменять там логику для требуемого модуля и инжектить уже её в тот самый модуль? Так на другие модули не будет аффекта и обмазываться юнитами не придется.
@TopToro3 жыл бұрын
Не противоречит Кисс, новые сущности проще чем 1000 строк в методе) я такое видел
@artursword32883 жыл бұрын
автору бы перечитать КНИЖКИ.. ибо 80% того что он тут наговорил не иначе как БРЕДОМ назвать нельзя.. он или не понимает основ или строит логику как то криво.. просто поржать можно с его слов, но молодёжь же не дай бог поверит в тезисы.. печаль беда... какое вообще отношение DRY к 2 РАЗНЫМ МОДУЛЯМ которые вообще по логике должны быть слабо связаны.. и при правильной архитектуре всё там было бы норм и без всех этих перечисленных им выдуманных проблем ..
@TopToro3 жыл бұрын
@@artursword3288 ну тут типа, что правильной архитектуры не бывает как таковой, и что явные касяки в архитектуре некоторых популярных решений почему то не ругают так же как код колег - двойные стандарты действительно. Наверное лучше всего просто стараться писать не говно: хорошо делай - хорошо будет=)
@jsemslava78803 жыл бұрын
Меня всегда удивляла фраза "не используй глобальные переменные" А на кой черт их тогда придумали.