Двойные стандарты АйТи
Вставка
- Опубліковано 7 вер 2024
- Курс PostgreSQL от учебного центра Слёрм: slurm.club/3uZlpwT
Ох уж эти двуличные программистики, сейчас мы выведем их на чистую воду, и покажем где, когда и как стрелочка не поворачивается, и вообще вы не понимаете - это другое
Музыка
Earmake - The Summer Mood
_____________________________________________________________
💰 Бонусы за спонсорство
www.youtube.co...
🖤 Telegram: t.me/extremeco...
💙 VK: extreme...
💜 Discord: dscrd.in/extre...
🤎 GitHub: github.com/ext...
Подпищек поставит лайк, отпищек комментарий
P.S.
А могло бы выйти 19 роликов по 30 секунд
А давай теперь 19 роликов по 30 секунд.
Ля, ты ни чего не понимаешь, мог бы ролики записать по слову, а затем смонтировать видео нормально, а то за 9+ мин очень часто повторяешься, не соблюдаешь принцип единственной ответственности
@@Icmana как боженька смолвил. Развелось ютуберов-самоучек :D
Как же жизненно (работаю с монструозным легаси документооборота). Во имя диалектики оставил и лайк, и комментарий.
@@Icmana сразу видно неопытного масленка, записываешь 32 буквы и нарезаешь из них какой угодно видос.
«Собрались злодеи, обмазавшиеся своим большим опытом в ИТ. Набрали паттернов, лекций, и книг, чтобы оберегать их оргию. И пируют»
Ахахахахах. Лев Толстой о программировании)
XD
@@neaf1sss нет, блин, волк худой
@@NerZul121_plus нет, блин, Сернатурал Зименен
Это их хлеб как и хлеб афтора пороть горячку ;)
19 роликов по 30 сек будем считать так
17, вычтем 2 ролика, там реклама каждые по 30 секунд
Ну смотря с чего начать считать их вполне 20 может оказатся
может 38 по 15 секунд?
Все эти правила, принципы и парадигмы программирования полезно знать, чтобы понимать, где и как их нужно сознательно нарушить.
top
Как сказал Барбосса, кодекс - это свод указаний, а не жестких законов xD
Золотые слова
У сферы ИТ 2 врага: фронтендеры и бэкендеры
еще фулстаки
да и вообще все эти "кодеры" ЗЛО, я ЩИТАЮ что в команде должны быть ТОЛЬКО бизнес аналитики и МАНАГЕРЫ, код писать в 2021 ЧОООО??? МОВЕТОН.. главное же ЯЗЫКОМ уметь чесать (так сказать софтскилзы развивать) ;))))))))))))
@@artursword3288 Не так. "Код писать в 2 ка 21 ЧТООО???"
как автотестИр целиком и полностью согласен - наговнокодят, а мне потом свой говнокод писать
Ещё и хрюши.
То, что тесты прошли успешно, означает одно - тесты прошли успешно.
и тесты выглядят как if (true)...
А как же тесты хуево написаны?
Ахахах
А твой комментарий означает, что на русском языке можно формировать предложения.
(function() {
let module = import(...) ;
if (! (module instanceof Promise)) {
// ti cho, s*Ka?
return { result: -1 }
}
module
.then(() => // Тут плохой код)
.catch(() => // АЙ, БЛ***) ;
return { result: 0 }
}) () ;
АйТи - это когда принтера всякие чинят
Не чинят, а чернила меняют
@@andscape1440 это лишь наиболее частая причина поломки.
@@lord_romzess_v наиболее частая причина поломки это красная кнопка на сетевом фильтре.
@@andscape1440 не меняют а разгружают на склад
Мемасы, реклама и скроллинг кода - 3 вещи, зачем я сюда прихожу. На сегодня я получил всё, что хотел, продолжай в том же духе.
"Пакеты с нпм догрузим в следующих видосах" (с)
Вы сделали мой день) So true.
Кто то в курсе почему на винде с нпм все так долго грузится, на линуксе бы секунд 10 заняло?
@@flatl1ne а что ты сравниваешь? Свой ПК на винде и Линукс на сервере? Мне кажется, в таком случае банально интернет побыстрее на сервере будет
Там от проца, интернета и оперативы зависит. Ну и от кол-ва пакетов, наличия кэша и package-lock.json
@@andor1904 я сравниваю винду на своем пк и линукс на своем пк , про сервер речи не было
Во первых, если HDD - страдай...
Блять, этот бесконечный фетч нод-модулей для реакта на фоне - Просто высшая стадия комедии!
@Antares nn возвожу в степень
@@ruslanundefined2242 Задаю показательную функцию!
@@user-ey5xw2nx9s факториальную!
@@mishalisovyi Кажется, растёт медленнее
@@user-ey5xw2nx9s зато не кончает дольше!
Автор, не слушай дурачков-хейтеров, видос получился действительно зашкварным 👍
1:15 настолько залип на задний фон что пришлось три раза отматывать назад чтобы вслушаться в то о чём ты говоришь)
Вот я тоже. В первый раз даже забыл, что слушать надо.
на этом фоне тот еще говно-код, многострочными стрингами компоненты строятся, превратили js в php первого уровня начала 2000-х годов
Блин я тоже на паузу поставил посмотреть что за дерьмо то такое, да в целом код прям такой треш что я глазам своим не верил, хотя они уже столько повидали
@@testchannel3265 Хех
@@testchannel3265 Не думаю, что будет лучше:
const header = document.createElement('header');
const Name = document.createElement('h1');
Name.id = "header__Name";
header.appendChild(Name);
document.querySelector("#wrapper").appendChild(header)
Легенды говорят, что сборка от create-react-app до сих пор скачивается...
Про банан и обезьяну с джунглями - орнул вслух
1. DRY. Мимо. Это означает, что у тебя один функционал будет реализован в двух местах. А потом твой напарник(Вася), будет в этом функционале фиксить багу. В классе А с помощью костыля Б. А потом Другой твой напарник(Петя) будет фиксать ее же, но в классе Ц с помощью котыля Д. А еще через пол года потребуется расширить этот функционал. И в этот момент вам обоим можно будет вполне заслуженно прописать строгий выговор. С занесением в грудную клетку. От того "воина легаси кода", который будет это дерьмо разгребать.
Касательно валидации пример убогий. Ибо DRY не относиться к макроархитектуре.
2. Ух ты... я аж расстерялся, за что тебя хаить. Ну... разделим пункт на подпункты.
2.1 Ну можно было например использовать декомпозицию, придерживаться пунктов S и I из солид, по возможности не злоупотреблять абстракциями, заменяя их композицией и тогда у тебя бы небыло лапшеподобного год-объекта, от которого все зависят.
2.2. Не кладем на DRY. Признаемся ПМу, что налапшали дерьма и архитектура поплыла. Далее уже действуем по ситуации в зависимости от ресурсов и времени. В идеальном мире- вооружаемся книгой "Рефакторинг", внимательно читаем и действуем согласно рекомендациям. В реальном - скорее всего костыляем и совокупляемся со своими же костылями,слезно прося прощения коллег, т.к. это наша вина.
2.3. Да, разница есть. Она вытикает из определения юнит-тестирования да и вовсе из здравого смысла.
2.4. А вот как раз принцип Лисков твоего примера не касаеться никак. А это, между прочим азы, воин ты наш... легаси кода)
3. Ну так ты вынужден разбираться с говно-кодом, состряпанным другим воином легаси-кода, который относился к своей работе так же, как и ты. Разве это не повод задуматься?
4. KISS противоречит любым принципам, если упарываться в крайности и искать, к чему бы докопаться. Ну или как бы оправдаться. Тут дело в том, что "Simple" - понятие растяжимое и однозначного ответа, где же заканчиваеться "Simple" и начинаеться "нихера не Simple", тебе никто никогда дать не сможет. Ты же сейчас банально манипулируешь терминологией.
5. Оо... добрались даже до "Что такое хорошо? Что такое плохо?". Глобальный объект - один из возможных способов решения ряда задачь, связанный с рядом недостатков и рисков, однако в некоторых случаях может оказаться более оптимальным, чем его альтернативы. Только и всего)
Те принципы и практики, о которых ты так снисходительно говоришь, придуманы гораздо более умными дядями(и тетями) и как раз для того, чтобы выполнять свою работу с минимальным уровнем последующего гемороя и спать по ночам. Залезть в жопу по-глубже, чтобы позже героически из нее выгребать, конечно романтично. Но затратно по времени. А время - деньги. А бабки, как известно - лучший best practice.
чувак, ты рили воспринимаешь в серьез этот троллинг?)
@@user-bk5fz8wd9g , ну как тебе сказать... Я понимаю, что мамин Линукс Торвальс похайпиться хочет и раздувает холи-вар. И скорее всего прошел бы мимо, если бы не засилие таких вот горе-гениев, за которыми приходиться все переделывать.
По моим наблюдениям, хорошо если 9 из 10 "специалистов", с которыми приходиться работать(ну или за которыми приходиться разгребать), как то так и относятся к своей работе.
Надавил на больное короче)
Подожди... Т.е. в программировании нет Самого Лучшего Паттрена? Это что... нам думать надо когда мы код пишем? А ну на вилы его!!!!11111ОдинОдинодин
Лучший паттерн это синглтон XD
@@Gameplayer55055 хиханьки хаханьками, но синглтон реально крутой паттерн...
За все годы что я в этих ваших софтваредевелоперах я видел только одну откровенно ужасную реализацию синглтона - когда синглтоном была UIView которая встраивалась в соответствующий UIViewController. Синглтоном, God-обжектом и глобальной переменной с доступом через макрос. Забавно что все работало ))))
@@YegresAL По идее синглтон полностью нивелирует необходимость глобальных переменных. Да это чуть длиннее в реализации, но нет вопросов - куда запихнуть синхронизацию, и проверки чтоб лучше дебажилось.
@@Gameplayer55055...который тоже "внезапно" стали считать антипаттерном 😁
@@dimdimich2356 смотря где
3:04 этот ls сделал мой день))
Причем больше всего там рассмешило про рельсу ))
Великий Джон Кармак, которого уж точно сложно упрекнуть в плохом коде, игнорил принцип DRY, он дублировал и захардкоживал функции в высоконагруженных участках, для улучшения стабильности и производительности.
Мне кажется, DRY существует не для того, чтобы писать меньше кода, а чтобы потом можно было вносить правки в одном месте, вместо того чтобы сначала ИСКАТЬ все места, где нужно внести правки, а потом в каждое из них вносить эти правки.
У меня у самого сейчас есть проект, в котором есть определенные типы объектов и модели, которые копируют друг друг во всех трёх компонентах, + в типах кое-где есть функционал, которого нету в других компонентах... И в общем-то, я вполне мог бы объяснить, почему так, а не иначе (ну или нет), но суть в том, что когда вносил недавно правки, добавляя дополнительные поля в таблицу в бд, мне пришлось поменять 6 классов вместо двух. Ну так это мой код, так что было просто, а если бы кто-то другой с ним работал, то он мог бы и не сразу понять, почему же алхимия выкидывает ошибку об отсутствии полей в бд, к примеру, ведь он же все поменял, что нужно 😅
ты прав, а автор или тупит и ему стоило бы НЕРЕЧИТАТЬ профильные книжки, или специально ХАЙПИТ, и несёт околесицу.. там если по пунктам разобрать что он нагородил, то вопросов к его ТЭЗИСАМ тьма.. жаль что это смотрят неокрепшие умы.. и могут поверить ему.. ну если автор абстрактный уровень не различает и сравнивает KISS(вынос абстракции в атомарную единицу не ломает его уж точно) не пойми с чем.. мне страшно за будущее.. тут скорее подходит слово ПЕРЕУМНИЧАЛ...
@@artursword3288 нууу, чё так резко, его видосы же процентов на 70 рофлы 🌚
люблю видосы, где у тебя бомбит. Как бы вдохновить на побольше таких? ко-ко-ко, ко-ко-ко, ты во всем не прав! (как смог)
Инкапсуляция это сокрытие
Ангуляр лучше реакта
Пхахх))) Ты постарался от души))))
Сахар не нужен и нужно все делать ручками и циклами. Алгоритмы же знать надо
@@nickmage123 Джейквери лучше ангуляра, а html на самом деле язык программирования
Осталось решить, можно ли считать синглтон глобальной переменной или мирно разайдемся, плюнув друг другу на спину?)
Слово public там есть? Есть. Static есть? Есть. Ну вот и всё.
@@Rameronos :D
Дык вроде как синглтоны юзать не комильфо как раз из-за того, что по сути это глобальные переменные, не?
@@gradovvladimir4315 , Вы не правы, синглтоны это синглтоны, а глобальные переменные, это глобальные переменные. Синглтоном может быть какой нибудь инстанс класса, скрывающего сложную реализацию. По архитектуре наличие единственного инстанса может быть обязательным условием, например абстракция для подключения к бд
@@ivangordeev6356 , а почему глобальная переменная должна быть обязательно примитивного типа? Это также может быть какой-нибудь сложный класс с нетривиальной реализацией
00:47 - найс коммент перед кодом))
Я очень часто такое поведение наблюдаю со стороны "трушных" кодеров. Раз уж такая пляска то подкину парочку личных кейсов :)
* Кейс с бекендщиком
бекендщик: "почему на фронтенде такой зоопарк, почему все решения не сводятся к одному, почему так много фрейморков."
[тем временем на беке: куча операционных систем, куча платформ, куча языков, куча фреймворков под каждую платформу, миллион баз данных, триллион сишных либочек, драйверов и прочего.]
* Кейс с дотнетчиком
дотнетчик: "Почему фронтенд такой лагучий, какого фига фронтендеры не пишут всё на ванильном 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
Жиза на все 100%, мы случаем не в одной команде работаем?
Про кейс с ооп рофланул с того, как классический GoF паттерн "адаптер" назвали костылём XD
Рофлю с того как "классические" паттерны которые выросли из-за необходимости решать проблемы возникающие из-за ограниченности java - возводят в абсолют. В динамически типизированных ЯП - половина из них не актуальны или видоизменяются в сторону упрощения, а в ЯП с более продвинутой системой типов - адаптер в данном случае не нужен. Для джавушки родной - без оберточек никуда, но это не отменяет что - это попросту заплатка для языка и никакой ценности в виде ускорения производительности, уменьшения потребляемой памяти, увеличения надежности, упрощения программы - это не несёт.
@@ievgenk.8991 Ценность это несет за счет того, что не дает совершать миллион других ошибок, в отличие от ДЯП
Эээээ... Кейс с дотнетчиком у нас случался с завидным постоянством. Этот дотнетчик наш ПМ. А недавно он открыл для себя волшебный мир js-фрейворков и от его примеров и ценных указаний на vue наш фронтовый чат (где одни ангулярщики) переполнялся матюгами.
В смысле видео более 30 секунд?
1) Повторение код вредно, не тем что ты описал, а тем что при изменении в одном месте, придётся менять код во всех копиях, которые неизвестно где, не известно сколько их и вообще об их существовании не известно. Твой код с 3мя модулями, не понял в чём вообще проблема, есть 3 модуля и все они используют одинаковую зависимость, понадобилось что бы один из них использовал другую зависимость - пусть использует, каким образом это "укокошит" остальные модули?
2) kiss вообще не имеет прямого отношения к практикам/подходам к программированию, этот принцип говорит, не создавать сложные системы, SOLID именно на это и нацелен. Дополнительный класс никак не делает систему сложной, не путай большую систему и сложную. Может быть здоровенный и простой проект, и может быть 100 строк обфусцированного кода.
3) Можно пример, почему в ооп ты должен обезьяну с джунглями банану добавлять? Всё отличие от функционального программирования, что функции с одинаковыми конструкциями use можно объединить в одном классе, что позволяет прокинуть один класс с общим состоянием, а не кучу методов с неизвестно какими данными.
4) глобальные переменные всегда зло - используй конфиг и не будет никаких проблем, легко можешь конфигурировать свой проект.
5) "определенный паттерн для REST" вообще непонятно в чём суть проблемы, какой глобальный контекст? Передаётся http запрос.
Если что, большинство фреймворков (по сути все) ничего общего с ООП не имеют.
Комрад, DRY нужен вовсе не для того чтобы "не делать двойную работу", писать отдельный код для каждой специфической ситуации гораздо проще и быстрее, чем заморачиваться с абстракциями и наследованием.
DRY нужен для того, чтобы при внесении изменений, в больших проектах, не искать "вручную" все места, где ты применяешь логику, которая должна работать строго одинаково. Крайне неприятно, когда к тебе приходит бизнес и говорит, что ты сам не разбираешься в собственной системе.
Точно так же и юнит-тесты, они нужны не для красоты, а для того, чтобы при изменении этих самых, общих абстрактных классов, моментально увидеть - какие конечные модули перестали работать так, как от них ожидают, чтобы не вычитывать это вручную в коде и не держать это в голове.
Чтобы не возникало ощущение "двойных стандартов" и чтобы самому оставаться адекватным, надо перед применением любого устоявшегося подхода или паттерна думать - "какие конкретно риски заставляют меня это делать?". Если ты понимаешь свои риски, ты понимаешь - зачем тебе эта доп нагрузка, и в какой степени она тебе нужна.
PS Я понимаю, что у тебя "стиль пАдонка" и ты отыгрываешь роль, но на самом деле правильная поставленная речь, манеры и позитивная коннотация звучат намного стильней, умнее и дороже:) Посмотри для примера канал - "Физика от Побединского", насколько этажей ниже он бы выглядел, если бы общался как ты?
Об этом автор тактично умолчал :)))
@@mykola_antal ну он не со зла:)
Начал за здравие, кончил за упокой!
Видос на 9,5 минут? Значит ли это, что следующий ролик будет совсем скоро, в августе?
Забавно узнать, что принцип драй это про недопустимость копипаста из одного проекта в другой(общие библиотеки от лукавого), и ни чуть не преследует цели менять бизнеслогику в 1 месте, а не по всему приложению искать возможные наведённые баги. И что домейн дривен дизайн с тест дривен дизайном это зло. Походу никакой я не программист. Пойду устроюсь на автомойку. Спасибо автор, что открыл глаза)
Так ну, применение того или иного принципа программирования зависит от контекста !) Любой код можно писать в определенном контексте и при определенной задаче:)
Люблю зайти на этот канал, черпнуть лопатой умных слов и пойти хвастаться в жизни.
Ладно, пересмотрю старый шедевр
Брат, не пропадай так надолго... Ты сохраняешь во мне любовь и ненависть к кодингу. Дай бог те здоровья
я программирую микроконтроллеры, что я здесь делаю ???? Много какой-то хуйни в этом вашем не МК программировании. Процедурное программирование - топ ! ко ко ко забыл сказать ;) Вроде ко ко ко- на языке программистов ПК это - абсолютно согласен ...
Я вообще в Quartus'e для Альтеры схемки рисую, но посидеть с попкорном посмотреть интересно на всю эту абстрактную возню)))
Ахаххаахахахах
@@gunnargunaxe, ранил, убил. Смехом!
Ранил "MaChEtE 2015".
А теперь обмажься MISRAC и попробуй тут вякнуть что глобальные переменные это хорошо))
Моргни, если тебя Слидан в заложниках держит
их двоих дкржат в одном подвале
Вообще всегда понимил DRY как способ имплементации SRP. Когда одна фича описана в одном месте, её проще править, нет риска забыть, что поправил только 2 места из 3. Соотвтественно, идея про экономию времени выглядит странно. К тому же, DRY часто требует больше времени, чем копипаста, потому что надо же ещё подумать как его поабстрактнее сделать.
Есть огромная разница между глобальной переменной а-ля window.mystateobject и Flux. Например, в иммутабельности. А так в пример и базу данных можешь привести, она тоже доступна в любой момент. Проблема глобальных переменных не в том, что они доступны отовсюду, а в том, как они изменяются.
Зачем эти недомолвки и полумеры! Проблема ЛЮБЫХ переменных в том, что они изменяются.
про функцию, где надо в одном месте чтоб работало немного иначе - жиза. решается так - надо чуть чуть пошевелить мозгами, и соблюдать инкапсуляцию и принцип единой ответственности, чтобы код был максимально модульным. и самый главный совет - используй сука мозги!
Да, натерпелся я однажды от таких ctrl+c, ctrl+v. Следующей задачей после данного действия прилетает задача где нужно внести изменения и в старый и в новый скопированный код. Ну да зато у нас сущности не появилось :D. И ладно если человек копипастер еще работает и случайно заглянул в ПР, что бы сказать где поправить. А то ведь бывает, что такие "ценные кадры" сваливают из компаний
Чувак, если ты не пишешь тестов в своем коде, ты либо лупишь супер мега стартап, который возможно выкинешь через неделю и не собираешься поддерживать вообще, либо колупаешь сайты-визитки. По поводу того же Dry - копипаст разрешен, если он имеет другое семантическое значение в данном случае. Тогда нет смысла пытаться объединять разнородные, пусть и похожие операции в один метод, потому что смысл его совершенно другой в разных частях кода. И KISS ты тоже не понимаешь. Держать простым - это значит держать в соответствии с бизнес-логикой и бизнес-сущностями. Опять же, если у тебя есть похожие, но различные по своей семантике сущности, то их можно хоть миллион штук наплодить, и это не будет нарушением принципа KISS.
4:09 DRY принцип скорее о КЛАССИЧЕСКОМ программировании а не о разделении клиент сервер, где особо грамотные маслята вместо выделения в функцию по сути ОДИНАКОВОГО КОДА его мажут толстым слоем по углам, потом такое саппортить невозможно, ибо нужно сперва весь код просмотреть, и в каждом углу сделать исправление.. так что Автор вводит в заблуждение .. уж лучше ЧИТАЙТЕ КНИГИ, а не по ютубчику учитесь)))) паттерны никогда не были прям БЭСТ ПРАКТИС, они скорее были набором наиболее распростроненных решений на наиболее часто возникающие задачи, и для УНИФИКАЦИИ решений решили их разъяснить, ведь когда ВСЕ кодеры в твоей ПАТИ говорят на одном языке и работать проще ...
Я не "отпищек", лайк тобі, та всілякого успіху. Дуже люблю твій канал. Як казав Е=мс^2нштейн, людина тоді розуміє питання, коли може пояснити його дитині простими словами. А твоїми словами, це не просто якесь там галіме розуміння - це вже мистецтво. Я, до речи, теж тепер знаю пітухон. Дякую!
Походу, я отстал от мемчиков, узнал только "Ярик, бачок потік"
БЛЯЯЯЯЯЯЯ. Какая подача! У меня очко порвалось уже от диаграммы спагетти-костыль))))) Просто, Бог!!! Ору)
Наконец-то Колян на сцене канала!
Наконец-то он нашёл рекламодателя для 10минутного видосика.
Чёт я вспомнил хентыч "стрелочка не поворачивается"
Да, за счёт того, что я часто ищу хент на рандом я получил абилку "знать хентыч на любой случай жизни"
"если тебе нужен банан, то приходится мутить ещё и обезьяну с джунглями" - X-D)))) жизаааа!!!
Ну поехали... РЯЯЯ
Принцип DRY: "Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы". Поверхностное понимание принципа это "не дублировать код", а вот углубленное "не дублировать источники знания", т.е., например, не дублировать константы в разных местах, не иметь хардкод в запросах и переменную в коде, не писать отдельно документацию и doc block.
TDD нужен не для того чтобы писать меньше кода, а для того чтобы быстрее находить проблемы в при его изменении и для более быстрого нахождения ошибок.
KISS вообще такая философия, к которой дое*** совсем легко, потому что Simple разный, в зависимости от точки зрения.
Про глобальные переменные ржу, фротендеры переизобретают всё заново по кругу год за годом чтобы зп ту зе мун двигать.
В разговоре про REST почему-то к middleware перешли и request объекту. Request использовать как глобальную "переменную" не очень хорошая идея, это скорее связка источника данных и команды из которой создается response.
Лайк за профессора фортрана на 5:33 , олды помнят
искал этот коммент
Про DRY и злополучную дупликацию кода принцип на самом деле простой. Разные сущности с точки зрения логики работы должны быть представлены разными элементами кода, даже если эти элементы кода совпадают на 99%. Если получится, можно совпадающие части вынести в отдельную утилитарную функцию/класс, но и за этим не стоит охотиться. А не наоборот, создавать одну сущность, параметризуемую разной логикой.
Т.е. например, если тебе нужно работать с массивами строк (напр, список людей) и чисел (индексы или даты), и оба нужно сортировать, то у тебя должно быть 2 несвязанных класса со своим методом сортировки в каждом. А уже в этих методах можно какой-нибудь qsort вызывать. Как не надо: создавать один класс КСортируемыйСписок с подклассами для каждого вида списка.
Мне самому эти идеологизированные кодеры уже изрядно поднадоели. Я обычно их советы просто игнорирую и делаю по-своему. Благо мне как сениору это позволяют.
О программировании не знаю абсолютно ничего, но нравится подача автора. Лайк
Как всегда. В любой области есть люди которые понимают что, зачем и как работает, и те что следуют за авторитетами не понимая что всё надо выбирать в зависимости от задачи.
Я сначала подумал что Добряк в кодинг подался.
А это не Добряк :D
4:18 раньше лапшу на уши вешали а щас на костыли...
А интернет так и не скачался...
Вижу жабаскриптера, готовлюсь ловить лулзы от потока говна, а видеоряд шикарно дополняет это
Слёрм?) Привет от зрителей Футурамы!)
Шутки шутками, а мне реально чуть ногу сервером не оторвало. Спасибо врачам - без осложнении. Только техилый шрамчик теперь ношу на память. Правдa, база там крутилась Informix, а не постгрес.
как обычно, догматическое мышление не позволяет отказаться от всего, что неприменимо к конкретной проблеме. И да, в ООП отсутствует аналог Lambda Calculus, что позволяет вертеть принципы как угодно (Карделли не считается)
07:05- недостатки глобальных переменных: ухудшают потокобезопасность, рискуют быть собранными в мусорку, становится причиной багов (потому что к ним есть доступ если любой части приложения).
Забеись. Чотко.
Правда, половины я не понял, но мемасики сделали своё дело, и я ржал так, как будто в теме 🍄
Я только-только начинаю учить программирование и не понимаю 90% видосов, но контент такой годный, что даже без понимания происходящего интересно смотреть.
Жиза.
Еще не понимаю почему фронтендеров засирают...
лучше читай КНИГИ толковых авторов.. блогер ради хайпа путает молодых неокрепших бредом.. да слушать прикольно изза рофляночки.. да только 80% наговоренного тут полный бред изза непонимания блогером того о чём он говорит(ну по крайней мере полного понимания)
@@artursword3288 слишком толсто
закрой ютуб и читай книжки
Самый прекрасный видовс за последнее время. ржали всем офисом
Самое весёлое помню, когда смотрел от какого-то ютубера получасовой ролик про вред сингтона в С# и угадайте, какой паттерн он использовал в своем следующем ролике при решении проблемы? :З
Но вы не понимаете, это другое. :Д
П. С. Если что не оправдываю синглтон, просто рассказал забавный момент.)
ну а что такого?) вред то есть, использовать то никто не запрещает))))
Большинство видеороликов на Ютубе по коду так или иначе имеют ужасную архитектуру и не могут быть голов вписаны в проект.
@@olegafanasiev4976 Да это понятно.)
Половину слов не понял, но слушать прикольно)))
Модули не должны зависеть друг от друга. По этой причине и не будет поднятой проблемы.
вы правы, а автор несёт какой то бред
Шо за бред, а зачем тогда модули нужны? Они нужны, чтобы использовать их в других местах, держу в курсе. Ты в node_modules загляни хоть раз, посмотри зависимости.
Топ! Твори дальше! Уникальный контент!
орнул со вступления без использования оператора опциональной последовательности)
По ходу не у одного меня в наборе "полезных" паттернов остался только кисс)))) Всё остальное для надувания щёк)
4:48 А как насчёт сделать абстрактный класс в котором будет реализовано большее число методов а то что нужно изменить будет в другом классе который будет наследоваться от того абстрактного класса? Не знаю как в C# или Java, но на плюсах я именно так и делал и вроде было норм. Типа, и код не повторяется и все работает так как надо
вот кстати да, часто вижу в чужом коде обычный синглтон, который обзывают как-нибудь типа context, module или subsystem - но в корне, это все тот же синглон. Назвали по другому и уже типа никто не заметит
Программист это когда с утра включаешь ПК, целый день пьешь кофе в офисе и рассуждаешь о паттернах, ООП, великом и малом коде с коллегами в офисе, жуешь SOLID, особенно тебе нравится как Барбара устроила "принцип постановки", вечером выключаешь ПК ни написав ни строчки кода, приходишь домой и говоришь: -как я сегодня устал!
Бля я полный 0 в программировании, но бля , как же интересно смотреть, как у программистов бомбит от остальных программистов
Крутые челы программисты, не хочу даже разбиратся в этом, слишком много говна ряльно, я даже звук выключил щас на видео еще лучше стало, хотелось бы чтобы программирование было очень легко, но пока до такого не дошли
@@themopse5515 К сожалению, программирование никогда не будет легко... Говорят даже на камне в горах Тибета высечено "ПДС" Что древний гуру расшифровал как Программист Должен Страдать...
Глобальные переменные это хорошо, удобно и главное быстро работает!
Просто пишите на ассемблере и у вас не будет проблем.
Оооо из дурки теперь можно вещать больше чем на 30 секунд ?
Ну он же не в дурке
По поводу лапши: просто оставляешь зазор для уточняющей реализации и клиентский (вызывающий) модуль уточняет реализацию лапши. Все просто жи, докорирование и композиция.
Я: Ну да, впринципе я согласен кроме первого случая
Мой уровень владения слоим змеем: print ('Hello world ')
Братан хорош! Давай контент! В кайф! Можно ещё?! Вообще красавчик!!!
7:31 чуть сердце не остановилось, не пугай так, подумал кто в дверь стучит, снял наушники, проверил, вроде бы никого, опять смотрю видос, снова кто-то стучит. 🤣
Дак в случае flux и middleware api есть одно явное отличие - эти "глобальные" переменные передаются аргументом функции, а не просто идет к ним обращение из кода. Ну и собственно и мутятся такие штуки спецом иммутабельными, чтобы фантомные баги не ловить.
0:15 можно апелировать К ФАКТАМ, а ФАКТАМИ можно только ОПЕРИРОВАТЬ)
Я так и не понял, что плохого в выборе подхода (а чаще компромисса), наиболее уместного в конкретной задаче.
Ну в книге по паттернам, которую я читал, так и говорится, что паттерны увеличивают кол-во классов и могут усложнить код. Причем говорится это в книге много раз, чтобы думали прежде чем паттерны пихать куда непоподя
То чувство, когда ответил, что глобальные переменные - это хорошо. Опыт в Пайтон - 2 месяца, опыт в C# - а там лет 8 назад несколько лаб в универе :D
Видос вышел к началу рабочего дня, отлично, пожалуй начну с видоса, а потом работа) определенно после просмотра будет баф +10 к качеству написания кода:)
Хотелось бы пример из видео, в котором нужно что-то поправить чтобы другом месте это работало немного по-другому, чем раньше. Не для себя, друг Тимур спрашивает :D
Чувааааал! Ты просто нереален! В этом видео все прекрасно! *яплакаль*
В точку! Я такого насмотрелся на проде, что все эти умные книжки про то, как писать "правльный" код можно смело на помойку нести. На практике эти "умные" советы мало применимы
они применимы если изначально проект нормально делать)
@@navizheniy ага, только в природе таких не сущечтвует
@@andreisuvorkov2023 существует)
@@navizheniy ты их сам видел или так, теоретически существуют а там как есть?
@@endery2927 я тебе больше скажу, я на них даже работал)
Полноценный видос, неужто!!
я бы сказал гайд по архитектуре
я, может, придираюсь, но DRY - про то, что копипасту придётся поддерживать. например, ты захардкодил значение, потом скопипастил, потом оказалось, что хардкод неправильный, исправил в одном месте и забыл про второе. а потом разбираешься, где ошибка. Как раз, наоборот, копипастить проще и быстрее (в момент написания кода).
про момент с зависимостями : ну тут можно через наследование, которое ты вроде не признаёшь, а можно этот функционал декомпозировать и вместо переопределения написать функцию, которая будет работать по-другому либо сделать возможность через входные параметры разруливать логику ( флажок там какой ) , но это уже больше на костыль похоже
а почему юнит - тесты через или? я думал, они нужны хоть как)
ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ - ЗБС
главное больше пафоса и гонора и любая шняга, звучит авторитетно
2009 Как сейчас помню , когда потолок не выдержал ... шёл дождь , я плакал и води от этого было ещё больше .... три портсигара , магнитофон .. четыре 😭. Все тачПанели и сиську тоже ... гоаорят , возле серверной в графе ответственный , до сих пор моя фамилия .
«Если в ООП тебе нужен банан, то приходиться мутить еще и обезьяну с джунглями». Бля, ору !
Мог бы округлить до часу, раз уж на то пошло
*До 30 секунд
Как уже написали, до 10 минут надо было округлить
как бекэндер могу заявить, что пример с контекстом запросом - это действительно другое, ты не понимаешь... (го третий выпуск)
3:50 ТЫ МОИ ОБОИ СПАЛИЛ АХАХ
Мне понравилось конечно про сравнение глобальных переменных в js и flux
но мазафака, сторы эти используются как правило в связке с нашими любимыми компонентыми фреймворками, а использование компонентного фреймворка автоматически избавляет тебя от необходимости плодить глобальные переменные специально или вообще задумываться о них, ну и кроме того flux как раз и позволяет избегать недостатков использования глобальных переменных.
Далеко ходить не надо. Паттерн "Синглтон" - классическая глобальная переменная, как она есть. И им обмазываются все кому не лень, в том числе и моднейшие DI-контейнеры. Вообще написать сколько-нибудь сложную систему с какой-либо связностью без наличия какого-либо глобального изменяемого состояния конечно возможно, но не нужно. В смысле, можно конечно обмазаться базами, очередями сообщений и прочими key-value хранилищами и хранить все там, но это просто способ замести проблему глобального состояния под ковер, принципиально не решив сопутствующих проблем и иногда добавив много новых
"Спустил правки на лицо" 😄
Меня всегда удивляла фраза "не используй глобальные переменные"
А на кой черт их тогда придумали.
много чего когда то придумали.
модульное программирование подразумевает копирование , в БЭМ это модификатор , т.е копируем кусок кода в функцию и добавляем функции префикс - и всё