Егор Бугаенко - Utility-классы нас убивают

  Переглядів 35,994

JPoint, Joker и JUG ru

JPoint, Joker и JUG ru

6 років тому

Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября, Санкт-Петербург
- -
. . . .

КОМЕНТАРІ: 119
@manapotion1594
@manapotion1594 6 років тому
Гайд - как стать спикером на JUGе 1) Берем этот доклад 2) Заменяем слово "объекты" на "рекурсивые функции" 3) В ответ на вопросы пикаем одну из фраз ниже после "Я с вами согласен. Но" - "Объекты не нужны. Стек рекурсивных функций тоже имеет состояние" - "Стандартную библиотеку делали идиоты - зачем делать целый класс Scanner, когда можно было просто написать статик рекурсивную функцию" - "StackOverflowException? Понятный код важнее! Непонятный? А я мыслю по другому!"
@easyCodeRu
@easyCodeRu 3 роки тому
Как много людей, которые для вида "изучили" основы ООП и забыли о них в первый же день.
@sergeyturikov3324
@sergeyturikov3324 3 роки тому
Ну этож Бугаенко :) У него всегда темы для срача, мне нравится Бугаенко. Если становится скучно на работе я иду в бложик Егора и нахожу срач по душе :)
@fallenangel1395
@fallenangel1395 3 роки тому
На самом деле, вещи говорит. Это сложно, по сравнению с привычным мышлением, но очень логично.
@user-br4gt7xu2j
@user-br4gt7xu2j 3 роки тому
это крайне круто в некоторых случаях и крайне неудобно в большинстве иных. У него просто очень мало опыта
@AlexanderBorshak
@AlexanderBorshak 5 місяців тому
А почему в Лиспе нет инкапсуляции? Через замыкание легонько реализуется. Или тут категорический подход, что инкапсуляция - она только в ООП, потому что кто-то сказал что должно быть именно так? А ООП может называться ООП только если оно "классическое"? Причем не в смысле каноничности, а потому что реализовано через классы - и снова потому что кто-то сказал, что должно быть именно так? Если у нас есть объект - в смысле контейнера состояния, и какая-то логика для данных таких контейнеров, то мы и на чистом С можем написать drive(car) - и будет так же понятно, как если на "классическом ООП" написать car.drive(). И это будет ООП на чистом С. Некоторые задачи лучше - то есть проще - решать в императивном стиле. Некоторые - в декларативном. Собственно, с этой целью и создают новые языки программирования - чтобы облегчить использование какого-то стиля или парадигмы; тех, что больше подходят под определенный класс задач, для которых и создавался язык. Остальные парадигмы просто остаются в тени выбранных для языка архитектурных решений - но не запрещены. Обилие паратигм программирования дает отличную вариативность - и можно взять именно то, что лучше подходит под задачу, пускай в каком-то случае это и просто пачка процедур.С другой стороны, любая идея, возведенная в абсолют, выхолащивается в бессмыслицу. Это все равно, как "а давайте молотком забивать только гвозди, и только одной стороной - потому что так в учебнике труда сказано". Хотя вариативность применения даже столь простого инструмента просто безгранична.
@qwertymangames1800
@qwertymangames1800 2 місяці тому
19:50 если хочется по солиду иметь маленькие объекты которые имеют только один метод, то зачем вообще нужны объекты. Можно убрать лишнее и реализовать всё функциями. Добавить туда функции высшего порядка.
@vyacheslavkozlov2207
@vyacheslavkozlov2207 3 роки тому
Аж ностальгия накрыла при виде листинга Basic.
@klxqz
@klxqz 3 роки тому
Егор просто приколоться решил над местной аудиторией. А они ему и противопоставить толком ничего не могут. Это лишь показывает некомпетентность слушателей
@d9kd9k
@d9kd9k 2 роки тому
вы что противопоставите?
@i292555
@i292555 2 роки тому
Спасибо, Егор, теперь и 1С: Предприятие выходит объектоориентированный)
@judexmars4214
@judexmars4214 9 місяців тому
Джокер от мира Java разработки
@Gretanit
@Gretanit 16 днів тому
Трудно, конечно осознать всю программу, особенно если он будет большая
@user-sz7kt8nf1m
@user-sz7kt8nf1m 3 роки тому
А мне нравится, интуитивно близко
@user-vm7re9bu9r
@user-vm7re9bu9r 2 роки тому
Интересная мысль
@AlexanderYakimec
@AlexanderYakimec 16 днів тому
А как по мне очень даже интуитивно.
@EdwardNorthwind
@EdwardNorthwind 2 роки тому
Вот если бы не лесенка, то вообще было бы идеально. А с другой стороны, это логично, что лишние телодвижения вызывают больший жор батареи, и чудес не бывает - подобный подход более медленный и требовательный. Даже в этом примере, на одной чаше весов примитивы, что весят копейки, а на другой - 6 классов, со всеми вытекающими.
@maxbykov229
@maxbykov229 Рік тому
Очень понравилось выступление. Особенно аргументы всех сторон. Поддерживаю подход Егора, вижу в этом много смысла. И Android действительно трэш.
@GrzegorzBrz380
@GrzegorzBrz380 Рік тому
Напомнило иерархию виджетов во Flutter
@user-tk2jy8xr8b
@user-tk2jy8xr8b 3 роки тому
Опоздал с комментарием на три года, но... Лесенка в ООП - это пережиток порграммирования текстом, объекты надо композировать в пространстве, возможно даже в трёхмерном (а то и больше, но зачем?). Тогда и программа будет не текстовая, а объектная. Видео оставляет некоторые вопросы, тема раскрыта недостаточно. Замечательно, всё скомпозировалось. Теперь, как внутри всего этого великолепия описываются условные конструкции, циклы и рекурсия? Построением, по сути, аналога AST в явном виде, как в блок-схемах? Какие примитивы делают чистый ООП язык тьюринг-полным? Чистое ООП не предполагает параметрический полиморфизм (это заимствование из мира ФП) - что предлагается в статическом стротипизированном ООП-чистом языке на замену?
@user-lk1fw1lp8b
@user-lk1fw1lp8b 2 роки тому
Не могли бы вы подробнее рассказать о композиции объектов в пространстве? Как вы это себе представляете?
@user-tk2jy8xr8b
@user-tk2jy8xr8b 2 роки тому
@@user-lk1fw1lp8b как объекты реального мира композируются в пространстве?
@user-lk1fw1lp8b
@user-lk1fw1lp8b 2 роки тому
@@user-tk2jy8xr8b позиционированием друг относительно друга. Но как этим можно что-то запрограммировать?
@user-tk2jy8xr8b
@user-tk2jy8xr8b 2 роки тому
@@user-lk1fw1lp8b так же, как собирают логические схемы из NAND элементов
@user-lk1fw1lp8b
@user-lk1fw1lp8b 2 роки тому
@@user-tk2jy8xr8b мне кажется, проще писать код, чем в реальном мире собирать что-то. Хотя идея безусловно нова.
@vanyasotnikoff6024
@vanyasotnikoff6024 2 роки тому
Все проблемы начинаются со слова "должен". Статиков не ДОЛЖНО быть, классы ДОЛЖНЫ быть маленькими, все ДОЛЖНО быть объектом и так далее.
@kobensky
@kobensky 9 місяців тому
мне кажется, что "должен" Егор употребляет в качестве "укрепления" своей теории. То есть не "кто-то что-то ему должен", а "должно быть так, что бы его теория не развалилась".
@iamdozerq
@iamdozerq 9 місяців тому
@@kobensky Ну да, он говорит что что бы было ооп ДОЛЖНО быть так. если не так, то не ооп. ООП это та самая постоянно разваливающаяся статическими классами теория.
@dmitriypronichev7048
@dmitriypronichev7048 3 роки тому
завидую прям коллегам, которые удостоились чести работать с таким классным инженером. И на самом деле, спринг не нужОн нам. Главное Евгению Борисову об этом не рассказывать )
@alexkluev561
@alexkluev561 Рік тому
шутки шутками, а вот для GraalVM в том же спринге сейчас никто не гнушается писать ручками конфигурации бинов. Ну и DI через конструктор завезли, за это отдельный респект.
@StonksMaster1
@StonksMaster1 2 роки тому
А потом GC тормозит приложение на сутки чтобы очистить эти все объекты 😀
@user-lk1fw1lp8b
@user-lk1fw1lp8b 3 місяці тому
Так это проблема GC и языка, а не подхода. Да, это по определению бвдет медленней императивщины, но насколько? Если брать именно таклй подход и положить его в основу языка, думаю, вполне можно создать что-то приемлемое по скорости
@alekseyshibayev5243
@alekseyshibayev5243 Рік тому
После этого ролика, становится понятно, почему Егора Бугаенко так тролят.
@dmitryduzhinsky2739
@dmitryduzhinsky2739 2 місяці тому
Скорее он профессиональный тролль
@alekseyshibayev5243
@alekseyshibayev5243 2 місяці тому
@@dmitryduzhinsky2739 я раньше тоже так думал, но когда перестал использовать солид и паттерны только на собеседованиях, и начал применять их в бою, и начало получаться писать СОЛИДно - начал понимать Егора Бугаенко.
@em_the_bee
@em_the_bee 2 роки тому
23:38 Crystal lang!
@alexkazimir3835
@alexkazimir3835 2 роки тому
В итоге lisp/clojure получается :-)
@lvn5609
@lvn5609 3 роки тому
Вся шутка в том что код на Бейсике короче и лучше читается.
@SplashDmg2011
@SplashDmg2011 3 роки тому
ну наверное потому что Java существует для более сложных программ)
@iamdozerq
@iamdozerq 9 місяців тому
Код который он дал в конце читается в 10 раз проще. Он помещается в голове, он супер понятный и логичный. Я как человек с дислексией на числа и с отличным объемным воспроиятием(связанные вещи, кстати) - не просто читаю его код а вижу его весь одновременно в объеме, а там вообще то аж 6 объектов. В оригинальном коде объемных прикладных "объектов" сильно больше. Цикл, сравнения, сами переменные, поведение при разных ситуациях, скобки даже у этого всего - это абстракции которые мозгу чего то стоят. Старый код нужно интерпретировать по пути, забывая сами выражения, запоминая результат. В новом коде сразу просто запоминаешь возможные состояния. Это принципиально другое мышление.
@ThisRussia
@ThisRussia 3 роки тому
14:40 вопрос задал Тагир?)
@teklamaili8093
@teklamaili8093 2 роки тому
Да
@kirillsh8383
@kirillsh8383 3 роки тому
все проблемы решены в котлины экстеншинами =)
@ChannelCheesecake
@ChannelCheesecake Рік тому
2023 год. Scala. ZIO. Все так и пишут. Мужик опережал время
@solomonsamsonovich
@solomonsamsonovich 4 роки тому
у нас такой говнокод не прошел бы стадии ревью
@ihateidiots9484
@ihateidiots9484 3 роки тому
Удачи с дебагом этой матрёшки
@ihateidiots9484
@ihateidiots9484 3 роки тому
@@igojira835 а вы всерьез считаете, что модульные тесты - панацея со 100% покрытием всех возможных ситуаций? И что они страхуют от всех типов багов вплоть до гайзенбагов / баггзонов Хиггса?
@ihateidiots9484
@ihateidiots9484 3 роки тому
@@igojira835 На практике у матрёшки попробуй ещё 100% покрой каждый слой + чтобы покрыть 100% этого хлама, нужно написать в 4-5 раз больше кода, а то и больше. И как-только решите изменить хоть чуть-чуть один слой в результате рефакторинга - придется переписывать огромное количество зависимых классов и тестов (а в матрёшке их ой как много). Это долго, муторно, дорого и утомительно. Плюс из-за того, что в матрёшке очень много делегирования между слоями, удачи с рефакторингом из-за оверинжениринга
@ihateidiots9484
@ihateidiots9484 3 роки тому
@@igojira835 эээ нее, не просто класс, в котором что-то не так, а декораторы декораторов среди слоев матрешки...вот тут и начнется жесть, так как до кода, обрабатывающего файл, нужно ещё добраться сквозь дебри обернутых обёрток
@ihateidiots9484
@ihateidiots9484 3 роки тому
@@igojira835 так это как раз то, что автор ролика чудит
@ihateidiots9484
@ihateidiots9484 3 роки тому
@@igojira835 вы точно видео смотрели? Внимательно?
@Yes.Im.Mr.Anderson
@Yes.Im.Mr.Anderson 4 роки тому
Боже храни питон!
@TheRebeled
@TheRebeled 6 років тому
Видео обрывается неожиданно. Все таки дошло до мордобоя?
@dmitriypronichev7048
@dmitriypronichev7048 3 роки тому
да не, просто обиженный на джаву человек, ради чего он будет драться? )))
@vr29645
@vr29645 5 років тому
Народ хочет процедурного программирования, он на нем и пишет. А ООП для них просто звучит солидно, вот они этот термин и используют
@Nonroya
@Nonroya 6 років тому
Напоминает скорее ФП, только зачем-то объекты вместо функций, в итоге код читать трудно. Объектов посылающих друг другу сообщения не заметил. Мой тимлид любит повторять "Любую проблему можно решить внеся еще один слой абстракции, кроме проблемы большого количества слоев абстракций".
@heck_fy
@heck_fy 4 роки тому
@@aammssaamm у него объекты всё-таки имеют обычно несколько методов, т.е. в своей книге в первом томе он об этом пишет по крайней мере, т.е. он использует не только конструкторы, но и результаты конструкторов - объекты, вызывая их методы. здесь это не показано, но это ключевое отличие, как я его (Егора) понимаю
@xelaksal6690
@xelaksal6690 6 років тому
Человек открыт к диалогу и это подкупает, но собеседников явно не хватает.
@user-tf8ff2od6g
@user-tf8ff2od6g 4 роки тому
Единственный нормальный коммент) Когда нечего аргументировать вникшему человеку, остается его хейтить.
@eugenex8892
@eugenex8892 5 років тому
На самом деле когда видишь цель может даже и проще... Но вот тут-же вспомнился Magento который использует именно такой подход, это просто убойный удар по любому CPU... Заканчивается это обычно тем что есть дохрена классов и вместо 100 строчек кода тебе надо искать какой-то там класс...
@user-ex7eb6py6k
@user-ex7eb6py6k 2 роки тому
Кстати, в конце выступления будет вопрос про производительность. И Егор ответит, что в таком случае можно профайлить классы, и самые критичные места заменить, на статик методы. Приходиться всё таки идти на компромис)
@user-jk6yr5qj4o
@user-jk6yr5qj4o 5 років тому
По историческим причинам программисты склонны даже в ООП-стиле писать процедурную кашу. Если воспринимать видео в качестве прививки от этой болезни - интересно. Хотя, конечно, слепое следование парадигме - тоже болезнь.
@user-vl4zr6py9s
@user-vl4zr6py9s 4 роки тому
Плюсую многократно! 👍
@Anatoly555
@Anatoly555 4 роки тому
Программист - это вообще болезнь ;)
@antonbandarchyk4198
@antonbandarchyk4198 4 роки тому
автор решает задачу написать полностью на ООП а не написать понятный читаемый код. Не всегда эти 2 задачи совпадают.
@izebit
@izebit 6 років тому
Функция принимающая на вход данные и возвращающая данные не изменяя состояние - плохо o_0 С каких это пор использование pure functions стало дурным тоном?)
@vancheloChanel
@vancheloChanel 4 роки тому
Тоже интересует этот вопрос
@andrei4020
@andrei4020 3 роки тому
Очень поздно отвечаю, но, на мой взгляд, дурной тон в том, что в Java, в принципе, не существует функций. Есть только методы. Чистота все-таки ближе к функциональному программированию и ваше высказывание выше несколько некорректно к данной теме. Возможно, что я и ошибаюсь.
@isey2851
@isey2851 3 роки тому
@@andrei4020 Статики были придуманы для избранных
@valerylukin8446
@valerylukin8446 3 роки тому
Я думаю докладчик имеет ввиду частое использование статических методов. Я видел в куче проектов огромные util классы которые принимали в себя кучу аргументов и порой даже зависимости которые должны были инжектится бы. Тоже самое про вынесение логики в приватный метод и потом огромный класс у которого один метод типа execute() и удачи потом писать тесты на такой метод который в итоге вызывает 100500 приватных методов.
@jojomajo
@jojomajo 2 роки тому
ВОт только не просто данные, а только функции. Огромная разница
@gtbutcher379
@gtbutcher379 4 роки тому
Отлично пояснил за чистое ООП. Улыбнул вопрос про "переучить людей на новый лад", вообщето знание ООП для большинства программистов как бы обязательная компетенция в наши дни.
@TheFuckel
@TheFuckel 3 роки тому
Только это знание проверяется просьбой перечислить 4 принципа
@alexkluev561
@alexkluev561 Рік тому
На одном из собеседований в начале карьеры как обычно спросили, что такое ООП. А потом спросили, где я пишу бизнес-логику. Ну я конечно ответил, что в сервисах. А потом интервьювер спросил, где в сервисе соблюдаются принципы ООП и тут я замялся :)
@antonkuranov
@antonkuranov 6 років тому
Тут ничего нового нет. Фреймворки автоматизируют сборку "матрешки" посредством паттернов Dependency Injection, IoC или ServiceLocator. Это единственное отличие от того, что предлагает Егор. Для более сложных приложений, особенно клиентских, "матрешка" Егора превратится в месиво.
@acidelk
@acidelk 4 роки тому
Название переменных - топчик. Integer - final class. Тут парень его реализует как интерфейс. После фразы: "Сейчас я пишу на java" - это очень странное поведение.
@writetoyourdestiny
@writetoyourdestiny Рік тому
Ничего странно, реализация интерфейса Integer говорит о том, что где-то в программе создан такой интерфейс. Здесь речь не о стандартном java.lang.Integer классе.
@ardarchic
@ardarchic 6 років тому
Самый странный доклад, который я видел...
@Gibsonen
@Gibsonen 6 років тому
этот странный человек написал свой ооп язык)
@----1281
@----1281 6 років тому
Хочется выкинуть эту объектную дрянь и оставить простой и понятный бейсик ) А если серьезно, то тут лукавство во всем: и код на объектах не короче (если добавить все классы, получится втрое длиннее), и поддерживать такое сложнее, чтобы понять что происходит, надо просмотреть все классы. Да и вообще выглядит как троллинг.
@user-ti1nq3uf5l
@user-ti1nq3uf5l 6 років тому
Не хотел бы я дебажить код этого товарища))
@ruslanshvarev9728
@ruslanshvarev9728 5 років тому
почему вы говорите, что надеетесь, "... что появляться будут языки и платформы..." так уже есть декларативные языки Lisp, Prolog
@MrRomanvideo
@MrRomanvideo 3 роки тому
Lisp не обьектно ориентированный
@alexanderabakumov80
@alexanderabakumov80 4 роки тому
что-то в этом есть
@Alexander-mj3jk
@Alexander-mj3jk 6 років тому
Просто это как с живописью: всем надоели традиционные стили, и люди начали придумывать всякие супрематизмы, сюрреализмы, кубизмы, перформансы и инсталляции, и прочие штуки. Это ново, привлекает внимание, люди про это говорят, художник получает заряд положительной энергии.
@FrolOFF100
@FrolOFF100 3 роки тому
Жаль конечно, что так несвоевременно сюда зашёл, но всё же хочу отметить, что всё то, что нас сегодня окружает, выглядит так во многом благодаря таким глупостям как эти вот кубизмы и супрематизмы. Само понятие дизайна как таковое своим появлением обязано этим концепциям. Так что может и из концепции Егора в итоге вырастет что-то правильное.
@Alexander-mj3jk
@Alexander-mj3jk 3 роки тому
@@FrolOFF100 а я и не утверждал, что это плохо. И вообще, сегодняшний мир построен из войн, которые начинать изначально было глупо.
@ivanaaa6049
@ivanaaa6049 5 років тому
У погромистов подгорает! :) Я бы только программу оформил иначе: с промежуточными переменными, которые бы передавал для создания новых объектов и шел бы с конца (а то получилось в функциональном стиле). Тогда программа была бы плоской, но ООП.
@stivstivsti
@stivstivsti 6 років тому
даже на it конференции должен быть городской сумасшедший
@fffsjkfbrutireer
@fffsjkfbrutireer 5 років тому
Согласен полностью с тем, что основное это человекопонятныйкод, но х3 будет ли с этой концепцией ясность и простота это вопрос
@volodymyr.kushnir
@volodymyr.kushnir 6 років тому
imho: из одной крайности в другую. Видимо автор довго кодил на C и в какой-то момент решил перевернуть все с ног на голову. p.s. вместо тысячи слов - "show me the code"
@ivanaaa6049
@ivanaaa6049 5 років тому
А вот как код выглядит при наличии set-еров и get-еров: ukposts.info/have/v-deo/g6JeYZp-gXemymg.html
@DanyloSyrotynskyy
@DanyloSyrotynskyy 5 років тому
Слева у нас удобочитаемый алгоритм а справа у нас алгоритм разнесенный на части по разным классам, а следовательно не целостный и в перспективе поломанный. Лекция называеться - как испортить работающий код с помощью ООП
@iozhukau
@iozhukau 5 років тому
И вот из-за таких фанатиков Скайп пол дня открывается
@lucifer-look-
@lucifer-look- Рік тому
Я написал игровой 2д движок с нуля на Java на таких принципах ООП. У него есть и скелетная анимация, и физика. И даже на очень старых устройствах он работает быстро и требует всего 100 мегабайт кучи. Собирается под винду, линукс, андроид. Так что низкая производительность - это как раз про плохой дизайн кода. Код с хорошим дизайном - это всегда путь к высокой производительности.
@dmitriykonopinskiy3793
@dmitriykonopinskiy3793 Рік тому
@@lucifer-look- где можно код посмотреть?
@lucifer-look-
@lucifer-look- Рік тому
@@dmitriykonopinskiy3793 ютуб удаляет комментарии с ссылками. Напиши мне на почту. Она есть в описании моего "канала". В ответ скину ссылку на проект
@alexfray7297
@alexfray7297 6 років тому
Старый доклад
@platonelenin
@platonelenin 5 років тому
У Егора ООП головного мозга.
@POWERon4ik
@POWERon4ik 5 років тому
Знаете что самое страшное? На этом видео 2/3 лайков...
@dmitriypronichev7048
@dmitriypronichev7048 3 роки тому
меня вот это тоже пугает. Понятно, что слева у спикера эталонно плохой код, но вот то, что справа - считать хорошим?! А вот сколько джунов потом начнет такой же фигней страдать... С другой стороны со временем понимаешь, что без работы точно не останешься... )))
@MikhailKolesnikov
@MikhailKolesnikov 5 років тому
В жаве есть метки, практически гото.
@TheNeomer
@TheNeomer 5 років тому
ооп головного мозга (с)
@chillout1943
@chillout1943 5 років тому
абсурд
@MrAdeptius
@MrAdeptius 6 років тому
Прогер, обиженный на весь мир. Ему всё не нравится... Только посмотрите заголовки его видео "utility нас убивают", "обьектно-ориентированное враньё", "ORM - это обитно"... Противно слушать все его недовольства. Не нравится ЯП - не пиши.
@user-jk6yr5qj4o
@user-jk6yr5qj4o 5 років тому
Ну ты же посмотрел - значит, работает. Не нравится видео - не смотри.
@user-vl4zr6py9s
@user-vl4zr6py9s 4 роки тому
Он вообще не говорит ничего про нравится или нет. С опытом он для себя выработал другой подход и пришел у выводу, что этот подход эффективнее. Делится этим. Причем здесь обиды или что не нравится яп...
Егор Бугаенко - ORM - это обидно
58:12
JPoint, Joker и JUG ru
Переглядів 59 тис.
Егор Бугаенко - Объектно-ориентированное вранье
44:52
Эта Мама Испортила Гендер-Пати 😂
00:40
Глеб Рандалайнен
Переглядів 7 млн
Егор Бугаенко - TDD вверх ногами
1:01:09
DotNext
Переглядів 16 тис.
CSRF (доска)
9:52
Владимир Башун
Переглядів 8 тис.
ТВОЯ ГЛАВНАЯ ОШИБКА В ООП
8:45
ExtremeCode
Переглядів 603 тис.
01. Dart и Flutter - зачем?! - Кольцов Сергей
1:45:29
Yandex for Developers
Переглядів 38 тис.
Про Kafka (основы)
49:23
Владимир Богдановский
Переглядів 344 тис.
Денис Родин (Сбер) - Прекрасный и ужасный ООП в Java
35:14
How Neuralink Works 🧠
0:28
Zack D. Films
Переглядів 25 млн