Подпищек поставит лайк, отпищек комментарий 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 секунд?
@chumakov_mikhail3 жыл бұрын
Все эти правила, принципы и парадигмы программирования полезно знать, чтобы понимать, где и как их нужно сознательно нарушить.
@monlewi19763 жыл бұрын
top
@НикитаБелов-ч7м3 жыл бұрын
Как сказал Барбосса, кодекс - это свод указаний, а не жестких законов xD
@boriskorotaev12793 жыл бұрын
Золотые слова
@vladislavb54713 жыл бұрын
У сферы ИТ 2 врага: фронтендеры и бэкендеры
@NoldoWalker3 жыл бұрын
еще фулстаки
@artursword32883 жыл бұрын
да и вообще все эти "кодеры" ЗЛО, я ЩИТАЮ что в команде должны быть ТОЛЬКО бизнес аналитики и МАНАГЕРЫ, код писать в 2021 ЧОООО??? МОВЕТОН.. главное же ЯЗЫКОМ уметь чесать (так сказать софтскилзы развивать) ;))))))))))))
@witetigre13 жыл бұрын
@@artursword3288 Не так. "Код писать в 2 ка 21 ЧТООО???"
@lacrimamoza3 жыл бұрын
как автотестИр целиком и полностью согласен - наговнокодят, а мне потом свой говнокод писать
@antonchehov55363 жыл бұрын
Ещё и хрюши.
@KravchenkoIgor3 жыл бұрын
То, что тесты прошли успешно, означает одно - тесты прошли успешно.
@Time2paw3 жыл бұрын
и тесты выглядят как if (true)...
@QmanKUCHER3 жыл бұрын
А как же тесты хуево написаны?
@YuriiKratser3 жыл бұрын
Ахахах
@bytefu3 жыл бұрын
А твой комментарий означает, что на русском языке можно формировать предложения.
@@andscape1440 это лишь наиболее частая причина поломки.
@andscape14403 жыл бұрын
@@lord_romzess_v наиболее частая причина поломки это красная кнопка на сетевом фильтре.
@TheMasterNumberSeven3 жыл бұрын
@@andscape1440 не меняют а разгружают на склад
@DieOffenbarung3 жыл бұрын
Мемасы, реклама и скроллинг кода - 3 вещи, зачем я сюда прихожу. На сегодня я получил всё, что хотел, продолжай в том же духе.
@atla5_3 жыл бұрын
Автор, не слушай дурачков-хейтеров, видос получился действительно зашкварным 👍
@esper_lvl49003 жыл бұрын
"Пакеты с нпм догрузим в следующих видосах" (с) Вы сделали мой день) So true.
@flatl1ne3 жыл бұрын
Кто то в курсе почему на винде с нпм все так долго грузится, на линуксе бы секунд 10 заняло?
@andor19043 жыл бұрын
@@flatl1ne а что ты сравниваешь? Свой ПК на винде и Линукс на сервере? Мне кажется, в таком случае банально интернет побыстрее на сервере будет
@esper_lvl49003 жыл бұрын
Там от проца, интернета и оперативы зависит. Ну и от кол-ва пакетов, наличия кэша и package-lock.json
@flatl1ne3 жыл бұрын
@@andor1904 я сравниваю винду на своем пк и линукс на своем пк , про сервер речи не было
@mikalai_root3 жыл бұрын
Во первых, если HDD - страдай...
@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)
@scarlatum3 жыл бұрын
Блять, этот бесконечный фетч нод-модулей для реакта на фоне - Просто высшая стадия комедии!
Легенды говорят, что сборка от create-react-app до сих пор скачивается...
@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 "специалистов", с которыми приходиться работать(ну или за которыми приходиться разгребать), как то так и относятся к своей работе. Надавил на больное короче)
@olegmak45412 жыл бұрын
Великий Джон Кармак, которого уж точно сложно упрекнуть в плохом коде, игнорил принцип DRY, он дублировал и захардкоживал функции в высоконагруженных участках, для улучшения стабильности и производительности.
@djhenya943 жыл бұрын
3:04 этот ls сделал мой день))
@MsDimkadrol3 жыл бұрын
Причем больше всего там рассмешило про рельсу ))
@КонстантинСайков-ж9л3 жыл бұрын
00:47 - найс коммент перед кодом))
@maratiakupov47303 жыл бұрын
Брат, не пропадай так надолго... Ты сохраняешь во мне любовь и ненависть к кодингу. Дай бог те здоровья
@liletl30833 жыл бұрын
Люблю зайти на этот канал, черпнуть лопатой умных слов и пойти хвастаться в жизни.
@ryazanov133 жыл бұрын
1) Повторение код вредно, не тем что ты описал, а тем что при изменении в одном месте, придётся менять код во всех копиях, которые неизвестно где, не известно сколько их и вообще об их существовании не известно. Твой код с 3мя модулями, не понял в чём вообще проблема, есть 3 модуля и все они используют одинаковую зависимость, понадобилось что бы один из них использовал другую зависимость - пусть использует, каким образом это "укокошит" остальные модули? 2) kiss вообще не имеет прямого отношения к практикам/подходам к программированию, этот принцип говорит, не создавать сложные системы, SOLID именно на это и нацелен. Дополнительный класс никак не делает систему сложной, не путай большую систему и сложную. Может быть здоровенный и простой проект, и может быть 100 строк обфусцированного кода. 3) Можно пример, почему в ооп ты должен обезьяну с джунглями банану добавлять? Всё отличие от функционального программирования, что функции с одинаковыми конструкциями use можно объединить в одном классе, что позволяет прокинуть один класс с общим состоянием, а не кучу методов с неизвестно какими данными. 4) глобальные переменные всегда зло - используй конфиг и не будет никаких проблем, легко можешь конфигурировать свой проект. 5) "определенный паттерн для REST" вообще непонятно в чём суть проблемы, какой глобальный контекст? Передаётся http запрос. Если что, большинство фреймворков (по сути все) ничего общего с ООП не имеют.
@artursword32883 жыл бұрын
4:09 DRY принцип скорее о КЛАССИЧЕСКОМ программировании а не о разделении клиент сервер, где особо грамотные маслята вместо выделения в функцию по сути ОДИНАКОВОГО КОДА его мажут толстым слоем по углам, потом такое саппортить невозможно, ибо нужно сперва весь код просмотреть, и в каждом углу сделать исправление.. так что Автор вводит в заблуждение .. уж лучше ЧИТАЙТЕ КНИГИ, а не по ютубчику учитесь)))) паттерны никогда не были прям БЭСТ ПРАКТИС, они скорее были набором наиболее распростроненных решений на наиболее часто возникающие задачи, и для УНИФИКАЦИИ решений решили их разъяснить, ведь когда ВСЕ кодеры в твоей ПАТИ говорят на одном языке и работать проще ...
@ЕгорБаранов-х8ъ3 жыл бұрын
Забавно узнать, что принцип драй это про недопустимость копипаста из одного проекта в другой(общие библиотеки от лукавого), и ни чуть не преследует цели менять бизнеслогику в 1 месте, а не по всему приложению искать возможные наведённые баги. И что домейн дривен дизайн с тест дривен дизайном это зло. Походу никакой я не программист. Пойду устроюсь на автомойку. Спасибо автор, что открыл глаза)
@горшочек-ч9ж3 жыл бұрын
О программировании не знаю абсолютно ничего, но нравится подача автора. Лайк
@baier54733 жыл бұрын
Ладно, пересмотрю старый шедевр
@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 наш фронтовый чат (где одни ангулярщики) переполнялся матюгами.
@Psyh-su3et3 жыл бұрын
Я не "отпищек", лайк тобі, та всілякого успіху. Дуже люблю твій канал. Як казав Е=мс^2нштейн, людина тоді розуміє питання, коли може пояснити його дитині простими словами. А твоїми словами, це не просто якесь там галіме розуміння - це вже мистецтво. Я, до речи, теж тепер знаю пітухон. Дякую!
@AndreyX-i6b3 жыл бұрын
В смысле видео более 30 секунд?
@DrForse3 жыл бұрын
Мне кажется, DRY существует не для того, чтобы писать меньше кода, а чтобы потом можно было вносить правки в одном месте, вместо того чтобы сначала ИСКАТЬ все места, где нужно внести правки, а потом в каждое из них вносить эти правки. У меня у самого сейчас есть проект, в котором есть определенные типы объектов и модели, которые копируют друг друг во всех трёх компонентах, + в типах кое-где есть функционал, которого нету в других компонентах... И в общем-то, я вполне мог бы объяснить, почему так, а не иначе (ну или нет), но суть в том, что когда вносил недавно правки, добавляя дополнительные поля в таблицу в бд, мне пришлось поменять 6 классов вместо двух. Ну так это мой код, так что было просто, а если бы кто-то другой с ним работал, то он мог бы и не сразу понять, почему же алхимия выкидывает ошибку об отсутствии полей в бд, к примеру, ведь он же все поменял, что нужно 😅
@artursword32883 жыл бұрын
ты прав, а автор или тупит и ему стоило бы НЕРЕЧИТАТЬ профильные книжки, или специально ХАЙПИТ, и несёт околесицу.. там если по пунктам разобрать что он нагородил, то вопросов к его ТЭЗИСАМ тьма.. жаль что это смотрят неокрепшие умы.. и могут поверить ему.. ну если автор абстрактный уровень не различает и сравнивает KISS(вынос абстракции в атомарную единицу не ломает его уж точно) не пойми с чем.. мне страшно за будущее.. тут скорее подходит слово ПЕРЕУМНИЧАЛ...
@DrForse3 жыл бұрын
@@artursword3288 нууу, чё так резко, его видосы же процентов на 70 рофлы 🌚
@ВладимирШкиль-х9ю3 жыл бұрын
Так ну, применение того или иного принципа программирования зависит от контекста !) Любой код можно писать в определенном контексте и при определенной задаче:)
@egos_ua3 жыл бұрын
люблю видосы, где у тебя бомбит. Как бы вдохновить на побольше таких? ко-ко-ко, ко-ко-ко, ты во всем не прав! (как смог)
@tongenq3 жыл бұрын
Инкапсуляция это сокрытие
@nickmage1233 жыл бұрын
Ангуляр лучше реакта
@artem_doronin3 жыл бұрын
Пхахх))) Ты постарался от души))))
@sn1cka_3 жыл бұрын
Сахар не нужен и нужно все делать ручками и циклами. Алгоритмы же знать надо
@dmitryvarnavskikh56483 жыл бұрын
@@nickmage123 Джейквери лучше ангуляра, а html на самом деле язык программирования
@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 смотря где
@alexandermokryshev53973 жыл бұрын
Комрад, DRY нужен вовсе не для того чтобы "не делать двойную работу", писать отдельный код для каждой специфической ситуации гораздо проще и быстрее, чем заморачиваться с абстракциями и наследованием. DRY нужен для того, чтобы при внесении изменений, в больших проектах, не искать "вручную" все места, где ты применяешь логику, которая должна работать строго одинаково. Крайне неприятно, когда к тебе приходит бизнес и говорит, что ты сам не разбираешься в собственной системе. Точно так же и юнит-тесты, они нужны не для красоты, а для того, чтобы при изменении этих самых, общих абстрактных классов, моментально увидеть - какие конечные модули перестали работать так, как от них ожидают, чтобы не вычитывать это вручную в коде и не держать это в голове. Чтобы не возникало ощущение "двойных стандартов" и чтобы самому оставаться адекватным, надо перед применением любого устоявшегося подхода или паттерна думать - "какие конкретно риски заставляют меня это делать?". Если ты понимаешь свои риски, ты понимаешь - зачем тебе эта доп нагрузка, и в какой степени она тебе нужна. PS Я понимаю, что у тебя "стиль пАдонка" и ты отыгрываешь роль, но на самом деле правильная поставленная речь, манеры и позитивная коннотация звучат намного стильней, умнее и дороже:) Посмотри для примера канал - "Физика от Побединского", насколько этажей ниже он бы выглядел, если бы общался как ты?
@mykola_antal3 жыл бұрын
Об этом автор тактично умолчал :)))
@alexandermokryshev53973 жыл бұрын
@@mykola_antal ну он не со зла:)
@demid088web2 жыл бұрын
Начал за здравие, кончил за упокой!
@yedilkalemshariv50393 жыл бұрын
Братан хорош! Давай контент! В кайф! Можно ещё?! Вообще красавчик!!!
@Skeleton5973 жыл бұрын
Видос на 9,5 минут? Значит ли это, что следующий ролик будет совсем скоро, в августе?
@stas_khavruk3 жыл бұрын
Наконец-то он нашёл рекламодателя для 10минутного видосика.
@Джи3653 жыл бұрын
Чёт я вспомнил хентыч "стрелочка не поворачивается" Да, за счёт того, что я часто ищу хент на рандом я получил абилку "знать хентыч на любой случай жизни"
@mrLukas-du4xd3 жыл бұрын
Наконец-то Колян на сцене канала!
@xxlagr13 жыл бұрын
Есть огромная разница между глобальной переменной а-ля window.mystateobject и Flux. Например, в иммутабельности. А так в пример и базу данных можешь привести, она тоже доступна в любой момент. Проблема глобальных переменных не в том, что они доступны отовсюду, а в том, как они изменяются.
@basilsoloview2 жыл бұрын
Зачем эти недомолвки и полумеры! Проблема ЛЮБЫХ переменных в том, что они изменяются.
@apristen3 жыл бұрын
"если тебе нужен банан, то приходится мутить ещё и обезьяну с джунглями" - X-D)))) жизаааа!!!
@ЙцукенПетрович Жыл бұрын
Про DRY и злополучную дупликацию кода принцип на самом деле простой. Разные сущности с точки зрения логики работы должны быть представлены разными элементами кода, даже если эти элементы кода совпадают на 99%. Если получится, можно совпадающие части вынести в отдельную утилитарную функцию/класс, но и за этим не стоит охотиться. А не наоборот, создавать одну сущность, параметризуемую разной логикой. Т.е. например, если тебе нужно работать с массивами строк (напр, список людей) и чисел (индексы или даты), и оба нужно сортировать, то у тебя должно быть 2 несвязанных класса со своим методом сортировки в каждом. А уже в этих методах можно какой-нибудь qsort вызывать. Как не надо: создавать один класс КСортируемыйСписок с подклассами для каждого вида списка. Мне самому эти идеологизированные кодеры уже изрядно поднадоели. Я обычно их советы просто игнорирую и делаю по-своему. Благо мне как сениору это позволяют.
@MaChEtE-yn5cm3 жыл бұрын
я программирую микроконтроллеры, что я здесь делаю ???? Много какой-то хуйни в этом вашем не МК программировании. Процедурное программирование - топ ! ко ко ко забыл сказать ;) Вроде ко ко ко- на языке программистов ПК это - абсолютно согласен ...
@gunnargunaxe3 жыл бұрын
Я вообще в Quartus'e для Альтеры схемки рисую, но посидеть с попкорном посмотреть интересно на всю эту абстрактную возню)))
А теперь обмажься MISRAC и попробуй тут вякнуть что глобальные переменные это хорошо))
@пхвлхн3 жыл бұрын
Моргни, если тебя Слидан в заложниках держит
@h_it3 жыл бұрын
их двоих дкржат в одном подвале
@vryaboshapko3 жыл бұрын
Вообще всегда понимил DRY как способ имплементации SRP. Когда одна фича описана в одном месте, её проще править, нет риска забыть, что поправил только 2 места из 3. Соотвтественно, идея про экономию времени выглядит странно. К тому же, DRY часто требует больше времени, чем копипаста, потому что надо же ещё подумать как его поабстрактнее сделать.
@iliasalaur3 жыл бұрын
4:48 А как насчёт сделать абстрактный класс в котором будет реализовано большее число методов а то что нужно изменить будет в другом классе который будет наследоваться от того абстрактного класса? Не знаю как в C# или Java, но на плюсах я именно так и делал и вроде было норм. Типа, и код не повторяется и все работает так как надо
@НиколайСушков-е5ж9 ай бұрын
07:05- недостатки глобальных переменных: ухудшают потокобезопасность, рискуют быть собранными в мусорку, становится причиной багов (потому что к ним есть доступ если любой части приложения).
@I2482 жыл бұрын
Топ! Твори дальше! Уникальный контент!
@MyMrdmitry3 жыл бұрын
Как всегда. В любой области есть люди которые понимают что, зачем и как работает, и те что следуют за авторитетами не понимая что всё надо выбирать в зависимости от задачи.
@hrayrbarseghyan54533 жыл бұрын
про функцию, где надо в одном месте чтоб работало немного иначе - жиза. решается так - надо чуть чуть пошевелить мозгами, и соблюдать инкапсуляцию и принцип единой ответственности, чтобы код был максимально модульным. и самый главный совет - используй сука мозги!
@Игорь-ь5у4б3 жыл бұрын
Да, натерпелся я однажды от таких ctrl+c, ctrl+v. Следующей задачей после данного действия прилетает задача где нужно внести изменения и в старый и в новый скопированный код. Ну да зато у нас сущности не появилось :D. И ладно если человек копипастер еще работает и случайно заглянул в ПР, что бы сказать где поправить. А то ведь бывает, что такие "ценные кадры" сваливают из компаний
@MasterSergius3 жыл бұрын
Походу, я отстал от мемчиков, узнал только "Ярик, бачок потік"
@ДенисМельник-в5ю2 жыл бұрын
Как же я люблю твои видосы! Какой же кайф. Я ценитель такого юмора.
@trollol25633 жыл бұрын
А интернет так и не скачался...
@viksench64473 жыл бұрын
не, ну ты ваще красавчик) и слушать оревно, и солидарен со всем)
@buellxb_rider3 жыл бұрын
Самый прекрасный видовс за последнее время. ржали всем офисом
@АлександрСериков-ч5ю3 жыл бұрын
БЛЯЯЯЯЯЯЯ. Какая подача! У меня очко порвалось уже от диаграммы спагетти-костыль))))) Просто, Бог!!! Ору)
@VitaliyBrizhan3 жыл бұрын
Чувааааал! Ты просто нереален! В этом видео все прекрасно! *яплакаль*
@ifan1463 жыл бұрын
я, может, придираюсь, но DRY - про то, что копипасту придётся поддерживать. например, ты захардкодил значение, потом скопипастил, потом оказалось, что хардкод неправильный, исправил в одном месте и забыл про второе. а потом разбираешься, где ошибка. Как раз, наоборот, копипастить проще и быстрее (в момент написания кода). про момент с зависимостями : ну тут можно через наследование, которое ты вроде не признаёшь, а можно этот функционал декомпозировать и вместо переопределения написать функцию, которая будет работать по-другому либо сделать возможность через входные параметры разруливать логику ( флажок там какой ) , но это уже больше на костыль похоже а почему юнит - тесты через или? я думал, они нужны хоть как) ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ - ЗБС
@alexandermatveev67773 жыл бұрын
Ну поехали... РЯЯЯ Принцип DRY: "Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы". Поверхностное понимание принципа это "не дублировать код", а вот углубленное "не дублировать источники знания", т.е., например, не дублировать константы в разных местах, не иметь хардкод в запросах и переменную в коде, не писать отдельно документацию и doc block. TDD нужен не для того чтобы писать меньше кода, а для того чтобы быстрее находить проблемы в при его изменении и для более быстрого нахождения ошибок. KISS вообще такая философия, к которой дое*** совсем легко, потому что Simple разный, в зависимости от точки зрения. Про глобальные переменные ржу, фротендеры переизобретают всё заново по кругу год за годом чтобы зп ту зе мун двигать. В разговоре про REST почему-то к middleware перешли и request объекту. Request использовать как глобальную "переменную" не очень хорошая идея, это скорее связка источника данных и команды из которой создается response.
@Aspirin4uk123 жыл бұрын
Дак в случае flux и middleware api есть одно явное отличие - эти "глобальные" переменные передаются аргументом функции, а не просто идет к ним обращение из кода. Ну и собственно и мутятся такие штуки спецом иммутабельными, чтобы фантомные баги не ловить.
@ВладимирБелоусов-г2ъ3 жыл бұрын
Чувак, если ты не пишешь тестов в своем коде, ты либо лупишь супер мега стартап, который возможно выкинешь через неделю и не собираешься поддерживать вообще, либо колупаешь сайты-визитки. По поводу того же Dry - копипаст разрешен, если он имеет другое семантическое значение в данном случае. Тогда нет смысла пытаться объединять разнородные, пусть и похожие операции в один метод, потому что смысл его совершенно другой в разных частях кода. И KISS ты тоже не понимаешь. Держать простым - это значит держать в соответствии с бизнес-логикой и бизнес-сущностями. Опять же, если у тебя есть похожие, но различные по своей семантике сущности, то их можно хоть миллион штук наплодить, и это не будет нарушением принципа KISS.
@TooStrongPlayerException3 жыл бұрын
Лайк за профессора фортрана на 5:33 , олды помнят
@monlewi19763 жыл бұрын
искал этот коммент
@ImMeshlem3 жыл бұрын
Я только-только начинаю учить программирование и не понимаю 90% видосов, но контент такой годный, что даже без понимания происходящего интересно смотреть.
@the_eye85743 жыл бұрын
Жиза. Еще не понимаю почему фронтендеров засирают...
@artursword32883 жыл бұрын
лучше читай КНИГИ толковых авторов.. блогер ради хайпа путает молодых неокрепших бредом.. да слушать прикольно изза рофляночки.. да только 80% наговоренного тут полный бред изза непонимания блогером того о чём он говорит(ну по крайней мере полного понимания)
@VictorPlay20173 жыл бұрын
@@artursword3288 слишком толсто
@sergflutter92323 жыл бұрын
закрой ютуб и читай книжки
@pavelzloi3 жыл бұрын
Очень хорошее видео, тема раскрыта нормально, спасибо, подписался :)
@javascripttask75563 жыл бұрын
Программист это когда с утра включаешь ПК, целый день пьешь кофе в офисе и рассуждаешь о паттернах, ООП, великом и малом коде с коллегами в офисе, жуешь SOLID, особенно тебе нравится как Барбара устроила "принцип постановки", вечером выключаешь ПК ни написав ни строчки кода, приходишь домой и говоришь: -как я сегодня устал!
@250-p6i3 жыл бұрын
Глобальные переменные это хорошо, удобно и главное быстро работает! Просто пишите на ассемблере и у вас не будет проблем.
@Meskalitofly3 жыл бұрын
Мне понравилось конечно про сравнение глобальных переменных в js и flux но мазафака, сторы эти используются как правило в связке с нашими любимыми компонентыми фреймворками, а использование компонентного фреймворка автоматически избавляет тебя от необходимости плодить глобальные переменные специально или вообще задумываться о них, ну и кроме того flux как раз и позволяет избегать недостатков использования глобальных переменных.
@11МаНаХ113 жыл бұрын
Половину слов не понял, но слушать прикольно)))
@Анатолій-я4и3 жыл бұрын
Я сначала подумал что Добряк в кодинг подался. А это не Добряк :D
@DartElf003 жыл бұрын
Глобальные переменные, как по-моему, это не плохо. Главное их правильно использовать. Ну и не прикручивать их к какому-то сверхважному функционалу напрямую. Любой инструмент плох, если им не уметь пользоваться.
@НикитаЗамалютдинов3 жыл бұрын
Вижу жабаскриптера, готовлюсь ловить лулзы от потока говна, а видеоряд шикарно дополняет это
@TheOnlybestgames3 жыл бұрын
Видос вышел к началу рабочего дня, отлично, пожалуй начну с видоса, а потом работа) определенно после просмотра будет баф +10 к качеству написания кода:)
@vyacheslav27503 жыл бұрын
На счет "store = глобальная переменная" не соглашусь 1. для взаимодействия со store нужно вызвать метод get либо set либо delete а это значит что мы уже можем отследить все обращения в store 2. по хорошему создают события которые изменяют данные, а это уже даем возможность не только отследить все изменения в store а и отсеять лишние запросы
@maksymkyryliuk4922 жыл бұрын
Да он просто любит байтить на комменты, человеку просто нечем заняться больше в этой жизни)
@alexpunch30363 жыл бұрын
Забеись. Чотко. Правда, половины я не понял, но мемасики сделали своё дело, и я ржал так, как будто в теме 🍄
@TopToro3 жыл бұрын
Так, сразу напишу, пока не забыл мысль) Про Dry и зависимый модуль. А что если сделать наследника зависимости, поменять там логику для требуемого модуля и инжектить уже её в тот самый модуль? Так на другие модули не будет аффекта и обмазываться юнитами не придется.
@TopToro3 жыл бұрын
Не противоречит Кисс, новые сущности проще чем 1000 строк в методе) я такое видел
@artursword32883 жыл бұрын
автору бы перечитать КНИЖКИ.. ибо 80% того что он тут наговорил не иначе как БРЕДОМ назвать нельзя.. он или не понимает основ или строит логику как то криво.. просто поржать можно с его слов, но молодёжь же не дай бог поверит в тезисы.. печаль беда... какое вообще отношение DRY к 2 РАЗНЫМ МОДУЛЯМ которые вообще по логике должны быть слабо связаны.. и при правильной архитектуре всё там было бы норм и без всех этих перечисленных им выдуманных проблем ..
@TopToro3 жыл бұрын
@@artursword3288 ну тут типа, что правильной архитектуры не бывает как таковой, и что явные касяки в архитектуре некоторых популярных решений почему то не ругают так же как код колег - двойные стандарты действительно. Наверное лучше всего просто стараться писать не говно: хорошо делай - хорошо будет=)
@Gameplayer550553 жыл бұрын
Именно ваши ролики мне помогли понять ООП :)
@win32filecoder.hydracrypt.153 жыл бұрын
Это ты про банан с обезьяной и джунглями?
@IYaphtes3 жыл бұрын
По поводу лапши: просто оставляешь зазор для уточняющей реализации и клиентский (вызывающий) модуль уточняет реализацию лапши. Все просто жи, докорирование и композиция.
@malcolmholmes1153 жыл бұрын
Все правильно автор говорит, особенно насчёт Dry. Выносить надо в основном те части кода, которые почти наверняка не будут меняться. Ну а в целом не надо делать карго-культ и надо понимать область применимости подходов.
@KonstantinBudrin3 жыл бұрын
Далеко ходить не надо. Паттерн "Синглтон" - классическая глобальная переменная, как она есть. И им обмазываются все кому не лень, в том числе и моднейшие DI-контейнеры. Вообще написать сколько-нибудь сложную систему с какой-либо связностью без наличия какого-либо глобального изменяемого состояния конечно возможно, но не нужно. В смысле, можно конечно обмазаться базами, очередями сообщений и прочими key-value хранилищами и хранить все там, но это просто способ замести проблему глобального состояния под ковер, принципиально не решив сопутствующих проблем и иногда добавив много новых
@smair5183 жыл бұрын
4:18 раньше лапшу на уши вешали а щас на костыли...
@ЮрийПлохов-к2в3 жыл бұрын
Ну в книге по паттернам, которую я читал, так и говорится, что паттерны увеличивают кол-во классов и могут усложнить код. Причем говорится это в книге много раз, чтобы думали прежде чем паттерны пихать куда непоподя
@alekseymudla53743 жыл бұрын
Спасибо за видео. Прям мои мысли озвучил по поводу всех этих нестыковок
@eam12193 жыл бұрын
как обычно, догматическое мышление не позволяет отказаться от всего, что неприменимо к конкретной проблеме. И да, в ООП отсутствует аналог Lambda Calculus, что позволяет вертеть принципы как угодно (Карделли не считается)
@kiowle3 жыл бұрын
Шутки шутками, а мне реально чуть ногу сервером не оторвало. Спасибо врачам - без осложнении. Только техилый шрамчик теперь ношу на память. Правдa, база там крутилась Informix, а не постгрес.
@asisu28773 жыл бұрын
вот кстати да, часто вижу в чужом коде обычный синглтон, который обзывают как-нибудь типа context, module или subsystem - но в корне, это все тот же синглон. Назвали по другому и уже типа никто не заметит
@doopath87373 жыл бұрын
Наконец видео от того, который смешной. Спасибо!
@edmm-113 жыл бұрын
Ничего не понял, но очень интересно. Лайк за FlexAir )
@marektop56763 жыл бұрын
Я просматриваю этот видос ста тысячным))
@jonkarmok18403 жыл бұрын
Нужно правильно проводить границы модулей приложения, и тогда проблем не будет, и да, иногда лучше скопипастить код, чем строить гигантскую обвязку чтобы его не копипастить. Важно понять когда это нужно делать, все паттерны и тп, это не законы и не постулаты по которым нужно строить приложения, а всего лишь рекомендации, какой конкретный паттерн нужно применить в конкретной ситуации и решает архитектор, в этом его задача, иначе можно было бы посадить макаку за компьютер, чтобы она все по паттернам делала, результат от этого бы не изменился
@ueelalinn3 жыл бұрын
как бекэндер могу заявить, что пример с контекстом запросом - это действительно другое, ты не понимаешь... (го третий выпуск)
@fleapse2 жыл бұрын
а кто сказал, что глобальные переменные - плохо? если есть что то опасное к изменению, то сделай это что то не изменяемым (константой) глобальный обьект реквеста идущий через мидлвееры например принято расширять, а не сужать и проблем возникнуто не должно
@maxxxeeem3 жыл бұрын
орнул со вступления без использования оператора опциональной последовательности)
@dj-a3 жыл бұрын
Слёрм?) Привет от зрителей Футурамы!)
@TalosDx2 жыл бұрын
Kotlin MPP делаешь валидацию в общем модуле, и делаешь с ней что хочешь, хоть для покусанных девайсов компилишь. (Но мы же тут про легаси, а не хипстерство и нанотехнологии поэтому ты применяешь принцип да какой же зае.. и пытаешься выбрать нормальное решение исходя из опыта и советов колле... а да, удаленка же... ) Тут есть один момент, о котором ты ещё забыл, когда говорил в 4:49. Потребовалось поменять бизнесовую логику, чтобы модуль работал слегка по-другому в модусе C, а у тебя ещё A и B. Но это может всё сломать, плюс код пахнет. Поэтому ты делаешь копипасту. Спустя полгода или около того находят такой баг, что он ломает эс всем в проде. Ты такой ну баг и баг, фиг с ним и либо идёшь сам править и что-то там вспоминаешь про модуль C либо, что более вероятно это идёт делать другой человек.... Который в душе не имеет, где там что происходило с этими модулями. Правит либо только в общем модуле либо только в C. Баг поправлен, тестеры довольны, эс заказчика горит больше, чем прежде. Ведь было потрачено куча времени на поиск проблемы (ты же помнишь что это легаси?) На её решение, на тестирование, на релиз, на ожидание поставки релиза (легаааси, ставить будете недели две в лучшем случае) И по итогу баг фиксят по х2, а то и хN, где N количество копипасты. Принципы принципами, но их нужно хорошо помнить и знать почему они сложились именно так. И помня это можно, как использовать их, так и не использовать, когда ситуация этого требует. Но только в том случае, если это разумное решение. По итогу работа разработчика, наверное, одна из самой большой эс боли в мире ведь приходится принимать кучу сложных решений, помнить о тысячи вещей и это при том, что хипстеры там на этом вашем модном typescript, kotlin.js, etc пилят убойные приложухи, а ты пилишь гов... легаси. Которое эти же хипстеры пилили лет 10 назад. И ладно ты несёшь ответственность за свои решения и можешь их поправить. Но, когда ты несёшь ответственность за чужие решения, которые кхм ютюб забанит за такие слова. И даже абсолютный чайник мог бы написать лучше. То ты обращаешься к тем самым принципам, чтобы убедить РП начать рефачить свой и проектов эс. По итогу ты выгораешь и уходишь в очередную глубокую жо... то есть депресию. А, когда случился февраль и нормальные компании поливали с рынка рф то ты понимаешь, что хипстером ты не сможешь быть даже, если очень сильно захочешь.
@компаниядоставкиЕдадомой.ру3 жыл бұрын
будьте добры сообщить, что за аниме на 2:49 в заставке?
@naotomo21603 жыл бұрын
JOJO
@компаниядоставкиЕдадомой.ру3 жыл бұрын
@@naotomo2160 О, спасибо, хоть что-то полезное от ролика) А ведь так если задуматься, так ведь и действительно, когда человек пишет омнокод годами, он это за опыт начинает принимать.) Синдром заложника, так сказать, размером с палец)
@Dadadadam9993 жыл бұрын
Самое весёлое помню, когда смотрел от какого-то ютубера получасовой ролик про вред сингтона в С# и угадайте, какой паттерн он использовал в своем следующем ролике при решении проблемы? :З Но вы не понимаете, это другое. :Д П. С. Если что не оправдываю синглтон, просто рассказал забавный момент.)
@navizheniy3 жыл бұрын
ну а что такого?) вред то есть, использовать то никто не запрещает))))
@olegafanasiev49763 жыл бұрын
Большинство видеороликов на Ютубе по коду так или иначе имеют ужасную архитектуру и не могут быть голов вписаны в проект.
@Dadadadam9993 жыл бұрын
@@olegafanasiev4976 Да это понятно.)
@the_woof3 жыл бұрын
3:50 - валидацию и там и сям можно сделать одним модулем, даже есть для этого разные фреймы. Но основная причина, это то что и фронт, и бэк имеют разные возможности провалидировать данные, и код там делает немного разные вещи, и это может не подпадать под DRY. 4:57 Вещи которые делают разные вещи со стороны бузинеса, должны делатся разным кодом чтобы не пришлось тратить время ни на юниты, ни на копипасту. И да, тесты надо писать не раньше, а сразу. 6:11 KISS тут не применим. Есть разные вещи - проще всего называть их разными именами. Ты же предлагаешь одинаковыми именами называть разные вещи и как-то там из хитро отличать, и что тут простого. Кода может то и меньше, но где та самая простота о которой идет речь. 6:42 - и в эфпэ тебе тоже нужна обезьяна с джунглями, планетой, вселенной и звездной системой, но благодаря мощи языка лично тебе приходится лепить в худшем случае только обезьяну с бананом а влучше - только банан. Эт я вам как рабочий функциональщик говорю. 6:54 - потому что инжинегры не математики и не могут в полное и строгое описание предмета, так чтобы вопросов не возникало. Вот фп шники иногда могут так сделать, но далеко не всегда и добрались пока до самых основных вещей(ну на этом хоть спасибо). 7:17 - правильный ответ будет такой - в самой стандартной ситуации их лучше избегать чем использовать, но есть некоторые частные случаи которые могут дать некоторый выигрыш. 8:28 - который в нормальных фреймах обычно иммутабельный, достаточные иммутабельные константы - не страшно.
@АлександрЕвдокимов-я4б4т3 жыл бұрын
Не соглашусь, коллега. Принципы типо DRY, KISS и Solid однозначно помогут писать более чистый код в большинстве случаев в прикладных задачах. Особенно начинающим программистам. Другое дело, что их не нужно считать абсолютной истинной, и выбирать подходящие для ситуации решения, например подход в ресте. И даже в этом случае, из-за нарушения базовых принципов приходится расплачиваться.
@V83nergy3 жыл бұрын
7:31 чуть сердце не остановилось, не пугай так, подумал кто в дверь стучит, снял наушники, проверил, вроде бы никого, опять смотрю видос, снова кто-то стучит. 🤣
@DarkIllusoire3 жыл бұрын
Хотелось бы пример из видео, в котором нужно что-то поправить чтобы другом месте это работало немного по-другому, чем раньше. Не для себя, друг Тимур спрашивает :D