Отрывок из вчерашнего стрима с код ревью по курсу to.digital/course01oop. Если в твоём Python коде нет хотя бы одного малюююсенького классика, отнаследованного от чего-то, то скорее всего твой код - го... оставляет жалеть лучшего. ООП - наше всё! Паттерны! Отцы не зря книжки писали! Задротство! Java! Аууууф! Ну... или нет?
@brenkovd3 жыл бұрын
Ну а как в питоне с сопровождением кода без классов? без устранения дублирования и все такое? безопасность доступа к глобальным данным? без ООП думаю проще прострелить себе ногу))
@t0digital3 жыл бұрын
@@brenkovd проект на 100 строк без ООП сопровождать легче, чем проект на 150 строк с ООП, в котором автомобиль наследует глобус:) не надо ООП ради ООП
@brenkovd3 жыл бұрын
Не ну 100 строк кода я не спорю)
@dmytroparfeniuk26703 жыл бұрын
@@brenkovd Я бы сказал, что здесь больше не то что лучше и что хуже в концептуальном виде. В целом наверное более правильно было бы сказать, что не стоит прибегать к какой то одной парадигме в коде, а использовать смешанный подход. Лично я поклонник ООП НЕ НА БОЛЬШЫХ проектах, а на проектах, где в целом объектная иерархия имеет смысл и место. Но в то же время не вижу смысл переусложнять код классами там, где достаточно обойтись модулями и ф-цими.
@nikitaderyushev75553 жыл бұрын
Полностью с вами согласен, с опытом приходит понимание того, что ООП как парадигма не натягивается на предметную область в 99% приложений, рано или поздно на большом проекте об него обжигаешься и начинается сущий ад только ради того чтобы сохранить ООП в чистом виде и solid'ом присыпать Не зря сейчас глобальный тренд на отказ от объектной парадигмы даже я ЯПах (тот же изначально ООПшный C# становится все больше функциональным, завезли pattern matching, records, ну а их LINQ это вообще лучшее что я видел) Сама идея ООП конечно хорошая, вот только чтобы нормально жить из него надо навсегда выбросить наследование Пишите больше чистых функций на иммутабельных типах, пацаны :)
@amigo48843 жыл бұрын
Слежу за вашим каналом уже давно. Очень нравится подача контента. Продалжайте в том же духе, жду видосы по линукс
@F345-u7t3 жыл бұрын
*продолжайте
@savel2work3 жыл бұрын
Автор всё больше и больше становится похож на преподавателя. И всё меньше - на того весёлого беззаботного чувака, с которого начался этот канал) Но должен отдать должное - преподаватель из него знатный.
@t0digital3 жыл бұрын
На этом отрывке третий час стрима просто:) веселость и беззаботность наше всё:)))
@olegssh64523 жыл бұрын
Преподаватели должны брать пример с таких как Алексей. В моём опыте только один человек есть, который преподаёт на таком же уровне - Тимофей Хирьянов из МФТИ. Вообще настоящих учителей по пальцам можно пересчитать!
@savel2work3 жыл бұрын
@@olegssh6452, чот тоже Хирьянова вспомнил, да.
@eliasg55363 жыл бұрын
@@t0digital А где фул стрим посмотреть?
@t0digital3 жыл бұрын
@@eliasg5536 это был код ревью одного из финальных заданий на курсе, запись доступна тем, кто тоже выполнил это задание:)
@markus8354 Жыл бұрын
Здравствуйте, смотрю вас давно года 4 уже, вы отличный учитель и материал у вас всегда интересный. Спасибо вам за труд!
@t0digital Жыл бұрын
Спасибо!
@ДмитрийБорисов-ъ3щ3 жыл бұрын
Поддержу всех тех, кто восхищается как Алексей умеет доносить информацию! Алексей, спасибо за труды!
@palomares.webador3 жыл бұрын
Круто начали. Но как-то внезапно закончили :-) Только начали разгоняться про ООП, и бамм, стоп. Просим продолжения
@eamarc3 жыл бұрын
В этом случае можно не трогать ООП, а предъявить за архитектуру: Request - объект транспортного слоя, Person - модель, бизнес логика. Смешивать их просто опасно, а наследовать вовсе уже за гранью добра и зла.
@suhanoves3 жыл бұрын
Мне кажется про ассоциацию стоило рассказать поподробнее, показать, что бывает агрегация и композиция и чем они отличаются. Думаю на подобном практическом примере это бы действительно стало понятно новичкам. А то основные принципы всегда на слуху, а чуть дальше никто не знает. Для тех кто хочет почитать подробнее есть прекрасная заметка на Хабре: «Наследование, композиция, агрегация» Лайк за просвещение в любом случае!
@delir03 жыл бұрын
Посыл правильный, но в таких посылах ВСЕГДА нужно делать оговорку, что "не писать ООП" != "не писать классы". В питоне нет способа определить непримитивный тип данных никак кроме класса (аналог record/struct в других языках), поэтому писать классы НУЖНО даже если писать ООП не нужно - чтобы определять данные и типизировать их. Поэтому писать классы НУЖНО всегда. Например, с помощью pydantic/attrs+cattrs или на крайний случай dataclasses Иначе новички принимают за аксиому утверждение "ООП не нужно" как "классы не нужны" и появляются тонны неподдерживаемой лапши из словарей, с которыми вообще невозможно работать, особенно если словари идут извне по API внутрь бизнес-логики. Особенно, когда по дороге они частично модифицируются.
@t0digital3 жыл бұрын
согласен
@julybikes Жыл бұрын
Спасибо, очень полезное видео. Подскажите, что за плагин, который подсказывает ошибки? Могли бы вы снять видо про полную настройку Sublime text для Python? Заранее спасибо!
@nanouasyn3 жыл бұрын
что это за красные подсказки об ошибках в vim? как такое сделать?
@t0digital3 жыл бұрын
это настроенная интеграция для питона, расскажу в одном из видео. Здесь neovim + pyright lsp сервер
@amigo48843 жыл бұрын
Спасибо на будущее! Тоже заинтересовала тема с вимом :)
@dmytroparfeniuk26703 жыл бұрын
@@t0digital Использую такое же. Есть вопрос. Я настраивал ЛСП + pyright, но там есть один момент с чтением из модулей, где есть __all__. Увидил в Джанго: from django.db import models -> у нас представляет модуль для работы с моделями. Есть from django.contrib.gis.db import models -> он использует __all__ для импорта всего из дефолтного моделс. в NeoVIM + LSP (pyright) это не читается. Можешь помочь с этим ?
@t0digital3 жыл бұрын
А как воспроизвести проблему? Те 2 импорта, что ты привел - у меня отработали ок, ошибок не подсвечивает
@ruslangabitov52023 жыл бұрын
"АМОЖНА?" в авторизационном запросе -- это 5!
@ak4nv3 жыл бұрын
А чо? НОРМАЛДЫКС! 🤷
@xcxc-iu3rb2 жыл бұрын
Полностью совсем согласен. Но как все таки принять правильное решение - писать проект/модуль в ООП стиле или в процедурном? И что думаешь на счет смешивания данных подходов?
@t0digital2 жыл бұрын
Смешивать можно. Где классы не нужны - там их и не надо. Классы надо, где набор данных есть и набор методов, которые эти данные обрабатывают. Если есть функции, которые требуют единой инициализации - можно упаковать их в класс. Если функции вызывают друг друга и передают друг в друга по цепочке данные - значит они явно связаны этими данными и их тоже можно упаковать в класс, а данные в self вместо того, чтобы по цепочке передавать. Если есть какой-то набор функций, которые не связаны друг другом набором данных, которые они обрабатывают, не связаны логически, не требуют единой инициализации (через конструктор), то и а незачем паковать их в класс. Если в классе набор тупо статических методов - аналогично нет смысла в классе. И полезно про принципы solid почитать, про единую ответственность и тп. А то совсем разную логику в класс понапихают, лишь бы ООП был)
@xcxc-iu3rb2 жыл бұрын
@@t0digital да, я с такими классами сталкивался, в последнем проекте был класс на 5000 строк и более 200 методов, и они логически слабо связаны между собой. Решил переписывать проект с нуля, потому что было с кодом очень тяжело работать, и тем более править там чужие баги. С рекомендациями выше полностью согласен, я так же мыслю, но сомневался правильный ли у меня подход, что у меня где-то классы, где-то все на функциях в рамках одного проекта, в какой-то книге читал, что это не правильно, и все время кажется, что кто-нибудь будет критиковать, если увидит :)
@t0digital2 жыл бұрын
@@xcxc-iu3rb я не вижу проблем в том, что что-то не упаковано в классы, а что-то упаковано. Ну вот, например, есть функции форматирования строк. Одна русские существительные склоняет, другая ФИО собирает с опциональным отчеством, третья даты или ещё что-то. Собирать их в класс незачем. Задача похожа, но данные разные. Преимуществ от сборки их в класс не получим, да и логику нарушим. Но это не мешает там в проекте, где классы нужны, их использовать
@xcxc-iu3rb2 жыл бұрын
@@t0digital а стоит ли упаковывать в классы ради наследования? Или просто импортировать функции, которые хочу переиспользовать? Но если там функций 200 штук и 20 из них надо переписать?
@t0digital2 жыл бұрын
@@xcxc-iu3rb наследование вообще штука сложная. Часто люди не втыкают в то, как можно наследовать и наследуют автомобиль от колеса или колесо от автомобиля. Вместо использования композиции - автомобиль использует или содержит колесо. Наследовать надо, когда отношение классов строго «является». Отнаследовать хомяка от животного допустимо, тк хомяк является животным. А колесо не является автомобилем и автомобиль не является колесом. Ладу калину можно отнаследовать от автомобиля, и какие-то конкретные колеса можно отнаследовать от базового какого-то колеса, возможно абстрактного или интерфейса. А ещё протоколы сейчас есть в питоне, неявные интерфейсы. Вопрос про переписать функции не понял, тут надо сценарий смотреть конкретный.
@VadimGlazov3 жыл бұрын
Вообще классы это типы данных. И если например с типом "числа" мы знаем что делать с детства, то абстрактный тип (класс) может описывать произвольную неведомую фигню, поэтому туда принято вписывать и то как с этой фигней можно что-то делать. А потом да, нахуевертили в обе стороны: и вызовы методов других классов, и этические нормы SOLID, которые вовсе необязательны. Между тем, идея суперкласса оказалась настолько живуча и эффективна, что теперь придумали сущности.
@leonidzimin24193 жыл бұрын
Видно что накипело. Терпения Вам) котанам "Чистый код" обязательно к прочтению, 2 раза!
@xcxc-iu3rb2 жыл бұрын
"Cовершенный код" тоже must read книга
@parvizyuldashev46683 жыл бұрын
Крутой канал. Спасибо за видосы. Код на писан на Vim?
@t0digital3 жыл бұрын
Спасибо! У меня в видео neovim, да
@alexandreabramtsev91603 жыл бұрын
Да. однозначно композиция. Только я бы не внутри Person создавал Request, а передавал бы его готовым в инит. Зачем? - это облегчит написание тестов для Person, когда там можно передать некий фейковый Request, или mock запроса. Видео однозначно лайк
@sergiyr91523 жыл бұрын
а что за питон плагин в виме? Выглядит интересно...
@t0digital3 жыл бұрын
Это pyright lsp сервер, расскажу в следующих видео
@ruservices3 жыл бұрын
Дружище, подскажи пожалуйста, горю!!! Установил ubuntu18.04 на vds. Так же установил PostgreSQL, Nginx и Gunicorn. Делал все по статье, так как сам .. Ну и поднял сайт на django. Все работало классно. Оставалось только привязать доменное имя. В настройках nginx изменил ip на домен и все полетело. Теперь и по ip и по домену открывается заглушка html nginx. Подскажи плз что делать? Назад на ip менял но уже не помогает(
@sidorovich211019863 жыл бұрын
Блин, этот код уже буээээ и дело тут не классах, а в том, что сложно понять, что там происходит. Код не читается, как книга. К примеру, if (data.decode().split(' ') ... === 'можна') - что это за выражение слева? Там должна быть переменная с понятным именем, иначе мне не понятно, что именно "можна". А в аргументах функции не указан тип переменной - у меня это вызывает дискомфорт, поскольку я не понимаю, с каким типом данных имею дело (и моя IDE тоже этого не понимает и будет молчать, если что-то не так). Методы слишком длинные, их нужно разбить на более простые понятные методы, а то приходится несколько раз перечитывать код, чтобы понять, что происходит (даже на таком, казалось бы, простом абстрактном коде).
@kirillzh47983 жыл бұрын
Посоветуй курсы где из новичков тимлидов делают по чистоте кода? Или это по праву рождения только передаётся?
@sidorovich211019863 жыл бұрын
@@kirillzh4798 Курсы - слишком долго. Есть книжки, которые так и называются "Чистый код". Чистый код приходит с опытом, но с книжкой быстрее и потом ещё быстрее, когда тебя поправляют, что здесь так должно быть, а там - вот так, потому что-то ... . А, вообще, идеального кода не существует, он только может быть лучше, чем твой предыдущий. И мой код не идеален, он лишь выполняет поставленную задачу.
@mnik01283 жыл бұрын
Видео начинается: "не ладненько" Видео кончается: "ладненько"
@КалёнаяСталь3 жыл бұрын
А можно екскурс в ООП, а то я пользуюсь и оно такое мифическое, не знаю что правильно делаю, а что нет
@КириллЧе-я5ы11 ай бұрын
Реализация request - самая простейшая это словарь, а не имя и все такое… имхо… хотя вообще такая себе сущность… скорее напоминает действие нежели класс
@VzhikIn3 жыл бұрын
Освети тему mock пожалуйста 🙏
@rokot3 жыл бұрын
Два дня назад было опубликовано имя зодиака Gary Francis Poste.
@АрсланГаджиев-ж5ж3 жыл бұрын
Здравствуйте. Помогите сделать правильный выбор. Хочу обучиться программированию. Зная о двух языках программирования ( поверхностно об их применениях ) python и JavaScript . Что лучше изучить для работы, карьеры , возможности переезда за границу?? Я полный ноль в программировании и мне по сути нет разницы какой язык учить , просто вы говорили в не которых видосах что программировалина JavaScript , а сейчас на python , поэтому вопрос к вам так как вы знаете эти два языка на хорошем уровне и знаете их возможности и работали по ним . Очень надеюсь на ваш совет
@t0digital3 жыл бұрын
Привет! Сложно советовать. На обоих языках пишет много людей, оба языка популярны. JS можно писать и фронтенд, и бэкенд, Python только бэкенд, но при этом на мой взгляд на бэкенде возможностей применения Python всё же больше. Я бы рекомендовал Python, потом выучите и JS уже по ходу работы.
@АрсланГаджиев-ж5ж3 жыл бұрын
@@t0digital спасибо большое вам за отклик и совет
@АлександрМелихов-к8м6 ай бұрын
С таким подходом - никак. Начните с избавления головы от маркетингового мусора. Самое важное что нужно понять, программирование - это инженерная деятельность, связанная с реализацией алгоритмов обработки информации в различных целях. Это могут быть и инженерные расчёты, и управление сложными процессами, веб-приложения и игры. Не занимайтесь программированием ради программирования, учитесь находить задачи и решать их кодом, постепенно изучая принципы работы вычислительных машин, алгоритмы и фундаментальные понятия программирования. Только так можно стать востребованным специалистом, который не боится смены языка и/или технологии. Каждый конкретный инструмент удобен для решения ограниченного круга задач, поэтому выберите сферу и изучайте инструменты, которые в ней используются. Операционные системы, микроконтроллеры, драйвера - низкоуровневое программирование (С/asm/verilog/processing...), магазины, CRM и проч - web-технологии (frontend/backend и СУБД, даже не столь важно на чём именно), наука и прочий ресёрч - R / python.
@dizzivoneverec27373 жыл бұрын
А чем композиция отличается от DI ?
@delir03 жыл бұрын
Тем же, чем автомобиль отличается от двигателя. Это ортогональные вещи.
@AlexandrSpirit3 жыл бұрын
Хаскел и Go, без ООП, и одни из самых быстрых языков для бека. Где-то слышал, что без причины не стоит создавать класс где можно обойтись функцией, т.к. объекты из классов будут храниться в памяти и всё будет работать медленнее чем на функциях. Прокомментируете?
@p.shpyro3 жыл бұрын
Пока ты будешь думать, как обойтись без классов / ускорить программу и т.д. - программист ООП напишет целый проект. Вдобавок компании типа Оракл или Майкрософт реально стараются оптимизировать свои ООП языки, для быстрой работы на хорошем уровне
@AlexandrSpirit3 жыл бұрын
@@p.shpyro Да я не думаю, пишу.
@DimiEG3 жыл бұрын
Не совсем понятно к чему это видео... Кстати а Вы Go lang практикуете совместно с Python? И что вы думаете о глобальных переменных в Python и стоит ли от них избавляться?
@t0digital3 жыл бұрын
Много глобальных переменных - плохо, немного иногда может быть оправдано. Go не практикую, практикую Rust сейчас, мне он сильно интереснее
@DimiEG3 жыл бұрын
Да, тоже увлёкся Rust, но потом вернулся на Python. Rust всё ещё сыроват, да и перспективы туманны.
@t0digital3 жыл бұрын
@@DimiEG я вижу только блестящее будущее у раста:) сыроват - сейчас уже нет, сейчас уже можно пользоваться, версии нужных библиотек вышли в стабильные релизы, Токио и тд
@t0digital3 жыл бұрын
@@mikenike7869 он пока не дошел до продакшна у нас, но, думаю, дойдет. Нам для веба в 1 очередь интересен, но веб сейчас это понятие оч растяжимое. Скорость, безопасность, интересные концепции в языке и тд. Есть интересная серия у Фейсбука, интервью с их Раст девелоперами, это одно из них, и внизу ссылки на другие интервью, почитайте, если интересны эти вопросы developers.facebook.com/blog/post/2021/09/09/meet-the-rustaceans-brendon-daugherty/
@DimiEG3 жыл бұрын
На Rust я стал сайт мутить на Rocket framework. Он даже заработал. Но увидев насколько богат в этом деле Python переключился на него. У Rust ужасный синтаксис под влиянием разных языков, в том числе JavaScript. Из за этого когда много кода это выглядит просто ужасно. У Python таких проблем меньше.
@ВячеславДолинский-г7ы3 жыл бұрын
Согласен полностью. Есть композиция/агрегирование ... Для этого примера это более уместно. Хотелось бы увидеть что то о событийно ориентированном программировании и принципе - любая сложная система должна состоять из модулей слабо зависимых друг от друга. Ну а если прикоснуться к многопоточности...
@PurpleDaemon_3 жыл бұрын
Тут вроде питон, какая многопоточность?
@plato4ek2 жыл бұрын
что за rksok такой? не гуглится что-то
@t0digital2 жыл бұрын
Задание с курса. Не должно гуглиться, так задумано
@baddynamic46663 жыл бұрын
А как вы вышли из vim'a? Я до сих пор не могу оттуда выйти.
@t0digital3 жыл бұрын
Этот момент не зря не показан, я тоже просто в нем сижу, не закрывая
@alexanderryzhkov97462 жыл бұрын
Был видос про выход из вима. Оказалось его можно свернуть по ctrl-z. Я свой вим свернул и теперь живу с ним.
@backendsamurai3 жыл бұрын
Когда видос по linux ?
@DimiEG3 жыл бұрын
У Алексея Мак, так что Linux в пролёте.
@backendsamurai3 жыл бұрын
@@DimiEG вообще то мак это тот же линукс но слегка модифицированный
@DimiEG3 жыл бұрын
Мак это Unix FreeBSD. Теперь непонятно что. Сильно перелопаченный программистами эпл.
@misatokatsuragi91223 жыл бұрын
Как говорится "Keep it simple, stupid". А как говорят JSники - "наследование в ООП - антипаттерн"
@СергейПресняков-о4р3 жыл бұрын
В JS вообще своеобразное ООП
@PurpleDaemon_3 жыл бұрын
Вроде в js это дополнительно обусловлено производительностью на парсинг всей этой цепочки наследования.
@xcxc-iu3rb2 жыл бұрын
не js'ник, но полностью согласен в этом с ними! сложные иерархии наследования зло.
@color3dcud1293 жыл бұрын
Алексей, обратно на Mac вернулись?
@t0digital3 жыл бұрын
Буквально сегодня слетел wifi, не цеплял сеть, пол часа бодался, вспоминал добрыми словами Кука))) Так я в целом не уходил с мака, thinkpad'ом тоже пользуюсь
@uvesel4ak3 жыл бұрын
@@t0digital Алексей, так понимаю, у Вас финкпад старый. Не поделитесь своим мнением тезисно вкратце о новых финкпадах? Взяли бы себе такой?
@t0digital3 жыл бұрын
@@uvesel4ak в целом меня и моя модель устраивает, единственное что в новых хорошо (что мне нравится) - это меньше рамка внизу, больше контента по вертикали помещается. Но в новых ход клавиатуры стал чуть меньше и мне это не нравится, здесь на старом клавиатура великолепна
@404piano3 жыл бұрын
Блин, столько комментаторов злых, которые не понимают зачем это видео.
@vladislavstepanov75913 жыл бұрын
@@Das.Kleine.Krokodil ревью кода на стриме
@i.am.rossalex3 жыл бұрын
Блин! Хоть кто-то поддержал процедурный стиль!
@movidikovich2 жыл бұрын
он не поддержал процедурный стиль, просто на питоне обычная процедурка очень сильно похожа на ооп
@gaben_aTan Жыл бұрын
Самое печальное, что ООП в Ютуб на примерах блогеры практически не используют. У меня когда прога без ООП уходит за 500 строк, получается буэээээ...
@kirillzh47983 жыл бұрын
Если честно, то до Алексея думал, что ООП и все эти "наследования" в классах - это функциональные инструменты, а оно вон как - ООП это для логики. В книжках про такое не писали, или я не те книжки читал))
@xcxc-iu3rb2 жыл бұрын
сам понял что сказал? ООП для логики?
@kirillzh47982 жыл бұрын
@@xcxc-iu3rb а ты сам ролик целиком смотрел перед тем как в коменты идти? )
@xcxc-iu3rb2 жыл бұрын
@@kirillzh4798 да, даже второй раз пересмотрел, он не говорил "ООП для логики"
@kirillzh47982 жыл бұрын
@@xcxc-iu3rb, ну, значит тебе не дано понять. =) За 11 месяцев существования комментария только у тебя появились какие-то вопросы к комментарию, который адресован Алексею. Это как влезть в разговор к прохожим.
@Britan1c3 жыл бұрын
нормалдыкс)
@Ramon4lk3 жыл бұрын
может там просто нужно было перейменовать клас в PersonRequest ?
@mikhailgorshenin90763 жыл бұрын
Лайк за alacritty!
@chameleon-one3 жыл бұрын
Суть ролика: a) В ООП существуют 5 концепций: 1) инкапсуляция 2) наследие 3) полиморфизм 4) абстракция 5) композиция b) Не стоит наследовать без логики т.е., родитель Человека не должен быть Запрос!!! От себя: в PyQt - правильная логика :)
@МаксимМаксимов-ч9т3 жыл бұрын
ООП не осилил?) Спасибо за видос.
@alicesmith99203 жыл бұрын
а это случаем не неовим со своим лсп сервером ?
@t0digital3 жыл бұрын
да, доволен не на 100%, постараюсь перенастроить и рассказать. Иногда линтер тупит и красит ошибки там, где их нет, бесит) Здесь pyright в качестве LSP сервера
@alicesmith99203 жыл бұрын
@@t0digital было бы интересно послушать про настройку 👍🏻
@TheAgathoDaemon3 жыл бұрын
@@t0digital Аналогично. Было бы очень интересно!
@nucluster3 жыл бұрын
@@t0digital присоединяюсь к предыдущим докладчикам! Даешь видос про настройку неовима с лсп👍
@hopelesssuprem18672 жыл бұрын
проблема ООП на питоне заключается в том, что на русском языке нет ни норм курса, ни норм книги - это главный его минус)
@movidikovich2 жыл бұрын
ооп везде плюс минус одинаковое, учите на любом другом языке его
@Jackson-mn3oj3 жыл бұрын
Я тоже не до конца понимаю на кой черт ООП на пайтоне, если пишешь небольшие скрипты =))) Это от джавистов мода на классы пошла, где "привет мир" хочет класс и метод.
@t0digital3 жыл бұрын
ага
@leonidzimin24193 жыл бұрын
Пример, посмотри как в django реализованы модели данных, формы и пр. Тут ООП идеально подходит.
@DimiEG3 жыл бұрын
Полагаю классы нужны чтобы объединить несколько функция для выполнения общей задачи. Кстати в современных языках таких как Go или Rust избавились от классов под предлогом, что тормознутые они и используйте вместо этого структуры.
@andruhaz3 жыл бұрын
Вот вот..про ООП в питоне про себя говорю словами Алексея "...Понапридумали всякой хрени"))) Основатели питона говорили простое лучше сложного. Инкапсуляция которой по факту нет(ну с костылем есть). Но то, что ООП есть это есть для большой разработки просто замечательно. Сижу читаю паттерны приходит крамольная мысль - а ведь для этих вещей Джава гораздо как бы...естественнее выглядит..
@DrublChannel3 жыл бұрын
Почти все видосы были интересными и полезными, но ощущение, что этот был сделан лишь бы сделать, абсолютно проходной, примеры тоже не очень, ждём новых, интересных видео
@t0digital3 жыл бұрын
Это видео не сделано для канала, не готовилось, не писался сценарий и тд, это вырезка из стрима, НО судя по тому коду, что я читаю на ревью - для многих это будет более чем полезно. Не полезно для вас - не значит неполезно для всех:) Подготовленные видео никуда не исчезнут с канала.
@brenkovd3 жыл бұрын
Не могу смотреть на Питон, какая каша , наверно я сильно приплюснутый
@illyamosiichuk6703 жыл бұрын
Это пример плохого кода на python))
@brenkovd3 жыл бұрын
@@illyamosiichuk670 Видимо удачно Алексей показал пример плохого кода))
@dmitriykonopinskiy37933 жыл бұрын
плохо без скобочек? =))
@brenkovd3 жыл бұрын
@@dmitriykonopinskiy3793 Я бы сказал очень)
@anmaner48223 жыл бұрын
Не понятно, к чему вообще это видео? Чтобы в последних 30 секундах рассказать о композиции, к тому же ещё и перепутать ее с агрегацией?
@t0digital3 жыл бұрын
Вы не правы, в видео композиция, а не агрегация.
@anmaner48223 жыл бұрын
@@t0digital Ну тогда я видимо не до конца понял смысл ваших класов, но суть в другом, если проект небольшой, нет смысла задрачивать в нем ООП, использовать 10 слоев абстракции и прочего, но если проект огромный, без ООП, в процедурном стиле, уже через несколько месяцев он превратиться в кашу и его будет невозможно расширять и поддерживать, нужно было об этом рассказать, а не о том, нужно ООП в питоне или нет.
@t0digital3 жыл бұрын
«не до конца понял смысл классов» а что там понимать в этих последних 30 сек видео, где в конструкторе создается экземпляр класса (композиция) вместо передачи ссылки на него в конструктор снаружи (агрегация) :)? В видео не говорится о том, нужно ООП в питоне или не нужно, в видео говорится о том, что не надо ООП ради ООП, его надо применять обоснованно, когда а) оно нужно и б) умеешь в ООП
@anmaner48223 жыл бұрын
@@t0digital Ну уж извините, я к сожелению, ну или к счатью не програмирую на ваших питонах и не очень понимаю не си-подобный синтаксис, судил по названиям класа, моя ошибка, признаю. "его надо применять обоснованно" - а теперь перечитайте мое сообщение выше, я об этом и говорю и о том, что эта тема не раскрыта, видео совсем не о чем.
@sergzach3 жыл бұрын
Если пишете без ООП, Ваш код в любом случае процедурный, потому что не функциональный же? А это плохо. Дело не в языке программирования, ООП нормально ложится на Python. Это скорее концепция, а даже не непосредственно классы.
@t0digital3 жыл бұрын
Не надо ООП ради ООП, и особенно не надо ООП, если ещё не умеете в него, речь этом. В джава даже hello world без ООП не написать, а в питоне можно. Да и ООП в питоне - это не ООП канонический в джава. Считается нормальным делать абстрактный класс, методы которого делают raise NotImplementedError. Интерфейсы надо вообще импортировать, они даже не подключены и реализованы как нахлобучка сбоку. Питон очевидным образом говорит - подумай дважды, прежде чем это делать.
@sergzach3 жыл бұрын
Я просто выступаю за шаблоны проектирования, вовсе не обязательно слепо следовать строгим правилам. Согласен. Но, если постараться забыть про ООП, как показывает практика, на определённом этапе становится очень неудобно работать с кодом. Чтобы он оставался надёжным, потребуется делать функции с большим количеством параметров. Читать это становится трудно. И тут приходим к мысли, уж лучше было бы изначально ООП ради ООП. Помучились бы вначале, но постепенно нашли бы "золотую середину".
@271828182845904523543 жыл бұрын
@@sergzach Этапы жизни программиста: 0. ООП сложно 1. ООП обязательно 2. ООП больно 3. ООП зло 4. ООП местами уместно
@xcxc-iu3rb2 жыл бұрын
Кто сказал что это плохо? А ООП код не процедурный, нет? Не функциональный же. Он так то еще более процедурный, потому что там поощряется использование глобальных переменных в пределах класса, более того одни классы могут менять переменные других классов. Очень легко нагородить адского треша. То, то в ООП процедуры назвали методами, от этого они процедурами быть не перестали.
@xcxc-iu3rb2 жыл бұрын
@@sergzach как количество аргументов влияет на читаемость? По-моему вообще никак. Более важно на сколько логичная структура, логичные и внятные имена переменных и тд. И ООП код бывает читать очень сложно.
@LeoVRad3 жыл бұрын
Зашёл чтоб поставить дизлайк за тупое название ролика