Тайм-коды: Работа с уже написанным Кодом 3:23 плохой код bad_gun_1.py. Взгляд сверху. Архитектура кода. (-) программный код находится вне функций и к тому же он разбит на кусочки 5:09 (-) не соблюдается РЕР 8. (-) именование классов и функций. Название должно отражать содержимое 7:28 (-) глобальные переменные - зло 8:14 (-) функция new_game. Что она должна делать? Запускать новую игру 8:42 (-) в - плохое название даже для локальной переменной 10:19 (-) функция new_game зацикливает сама себя по времени и получается, что она совсем не уходит в mainloop()(не отдает управление главному циклу) 11:49 (-) возможности перестартовать игру нет 12:15 (-) до mainloop() дело не доходит, пока игра не закончится, а она не закончится никогда 12:35 (-) в наличии рудименты, атавизмы неработающих кусков кода 13:37 (-) ход выполнения 15:02 что внутри классов. class ball 15:42 убирать надо пофиксенные комментарии 17:00 во всех функциях, методах писать комментарий, за что он отвечает 18:10 плохой код bad_gun_2.py. 19:46 отладочная информация. В релизной версии надо убирать дебажную печать. Разные способы организации дебажной отладочной печати: 1) глобальная переменная DEBUG 2) встроенные средства 22:08 вместо кусочков кода надо делать 1 функцию main. Разместить её, например, в самом верху. И в самом низу вызвать её. В ней явным образом будут написаны какие переменные являются глобальными уровня модуля 24:39 допустимо CAPSLK (UPPER CASE), когда опасная конструкция, глобальная константа 25:52 соглашение именования, чтобы отличить глобальную константу от глобальной переменной: переменные (g_...), константы (UPPER_CASE), функция (snake_style), класс (CamelStyle) 29:05 функция SHAR 32:46 name convention. Соглашение об именовании, для этого и нужно ООП. Наследование, иерархия возможных объектов, целей. Программа не масштабируемая (scalable) 37:35 хороший код gun.py 37:50 абстрактные базовые классы abc (Abstract Base Classes) 39:58 Folding -> Collapse all # свернуть всё 41:36 Frame - рамка. Невидимый виджет, необходимый для группировки других виджетов. Сам фрэйм не отображается. Он как директория 43:37 Singleton. Шаблон (паттерн) проектирования синглтон. Класс, который всегда существует только в одном инстансе 44:54 ситуация с константами 48:06 функция new_game в плохом коде №2 48:34 вертикальная черта далеко вправо в PyCharm - РЕР 8 максимальная длина строки 79 символов 49:01 функция длиной более 50 строк - неудобочитаемая. Лучше, если она помещается на один экран 51:18 ответственность. Принцип единственной ответственности 51:45 любой алгоритм можно реализовать при помощи ветвления (условного поведения) и циклов 54:12 возврат к хорошему коду gun.py. Чёткое разделение обязанностей. class GunGameApp 56:55 у класса в конструкторе создается, в качестве его члена, подкласс, выполняющий за него делегируемый функционал 57:42 BattleField(self) в init в MainFrame - ему пробрасывается сам MainFrame через (self). Т.е. BattleField ->(self) имеет ссылку на MainFrame для взаимодействия. Понять, чем занимается хороший класс можно просто посмотрев на его конструктор 58:57 class BattleField 59:42 super().__init__ () # запуск конструктора предка. super(). - возвращает ссылку на самого себя, но как предка 1:00:06 наследование. Подстановочный критерий Барбары Лисков. Производный класс должен делать то самое, что делал базовый. Производный класс является частным случаем базового класса 1:04:23 если класс является наследником другого базового класса, чтобы все работало, должен быть вызван конструктор базового класса. Иначе полноценного наследования не произойдет, потому что не будут созданы базовые атрибуты. 1:09:46 параллельные события без main(). внутри программы событийной вовсю используются события. Иначе можно делать централизованный цикл 1:11:59 class Agent (ABC). Зелёный крокодил (@abstractmethod) Это декоратор - объявление, что этот метод является абстрактным. Это значит, что его нужно обязательно реализовать. 1:14:02 pass_event - такая штуковина для пустого события 1:15:13 запуск чистого кода gun.py
@johnd14315 жыл бұрын
Какой же позитивный и здоровский вы мужик, Тимофей. спасибо за бесплатные лекции, долгих лет вам жизни!
@ДмитрийХорькин5 жыл бұрын
Прошло 5 минут от видео, уже ору! Лучший препод по программированию ever. Во первых - чувство юмора, с учениками на одной волне, во вторых сразу говорит, что не всё знает и так далее, очень хорошую атмосферу всем этим создаёт))
@n3sqinn5 жыл бұрын
как я рад что это высветилось у меня в реках
@ander14755 жыл бұрын
Мне понравилось. Как программист со стажем, на разборе поделок от студентов посмеялся от души))) Спасибо) Ну ничего.. когда-нибудь, дай бог, они посмотрят что делали в молодости, и тоже улыбнутся) Все когда-то начинали с SHAR и PUSHKA =)))
@isos65345 жыл бұрын
а можете фидбек че они там смешного пилили?
@Галчонок-в3т4 жыл бұрын
@@isos6534 да он же программист со стажем, нахуй ему перед тобой оправдываться
@dima06star4 жыл бұрын
@@isos6534 У студента двоечника бомбануло? Препод же объяснил: код - нечитаемое говнище, не понятно как работающее.
@reisders2 жыл бұрын
@@dima06star да поч бомбануло то? может он не программист и ему интересно
@nick_bezverkhyi5 жыл бұрын
Крутейший преподаватель, смотрю со слезами на глазах, ибо я уже пару-тройку лет как профессиональный программист, но ВУЗ мне не дал толком ничего. Вашим студентам очень повезло! Так это ещё учитывая то, что я на Java пишу и мне Phyton на данный момент не очень интересен. Но подача настолько затягивает и привлекает, что посмотрел пару лекций и в принципе смогу написать какую-то игрушку на питоне. Спасибо за качественный контент.
@Галчонок-в3т4 жыл бұрын
МФТИ - самый топовый ВУЗ страны.
@str1k3rz0r5 жыл бұрын
верните мои 18 лет, хочу на первый курс туда где преподает Хирьянов. К своим 28 уже бы software engineerом был бы. Однозначно лайк, смотрю, впитываю!
@m5xgaming4715 жыл бұрын
К сожалению питон уже всё
@timohamedvedev2375 жыл бұрын
@@m5xgaming471 , с чего такие выводы? Я только собираюсь его изучать. Думаешь не актуально?
@nic0n0R5 жыл бұрын
@@m5xgaming471 питон сейчас наоборот набирает популярность Многие преподаватели в моём универе сейчас его активно используют в своих работах, особенно питон джанго
@m5xgaming4715 жыл бұрын
@@nic0n0R Вот именно. Ну изучаешь ты его, как миллионы других. И куда ты пойдёшь? На фриланс? Сражаться за любой заказ?
@АртурГареев-х2д5 жыл бұрын
@@m5xgaming471 а что ты будешь делать, изучая непопулярный язык? Месяцами искать заказ?
@OmgFiny5 жыл бұрын
Новая доза мозговой деятельности на сегодня! Спасибо 🐍
@AnatolikZX5 жыл бұрын
Топовый контент, прекрасная подача =D
@handleftman5 жыл бұрын
я хоть не студент уже, но спасибо за видео!
@inkorcoder75515 жыл бұрын
я вообще ни разу не питонщик, но просмотрел все лекции, и теперь я питонщик :D (нет конечно, но лекции очень интересные)
@АндроидКузьмич5 жыл бұрын
Если ты думаешь как питонщик, выглядишь как питонщик, крякаешь как питонщик - значит ты питонщик!
@wekanex5 жыл бұрын
Если ты проглатываешь пищу целиком то ты питонщик ) поздравляю
@Настя-д1д3ш5 жыл бұрын
класс, респект и уважуха за подачу материала)))
@_pheax4 жыл бұрын
спасибо ! классная подача информации
@Snake_SOFT5 жыл бұрын
Я, вот смотрю и ничего не понимаю, но хотя может быть мне ещё рано это понимать. Мне нравится как, вы, всё объясняете.
@OSKOL_245 жыл бұрын
главное желания интерес интерес-ето прогресс желания-действия поэтому желаю тебе успехов)
@ЕгорМитрофанов-г7ъ5 жыл бұрын
Тимофей, чувак заебок. Смотрю его с удовольствием.
@ВладиславЕгоров-п4ю5 жыл бұрын
5:57 Тимофей Фёдорович, подскажите, пожалуйста, где найти эти видео
@tkhirianov5 жыл бұрын
kzbin.info/www/bejne/opzYgJh8mMZmj6c
@ТемирланАбдрахманов-о6ы5 жыл бұрын
Спасибо за принципы SOLID :)
@irkost5 жыл бұрын
лайк не глядя
@bluesnake004 жыл бұрын
Говнокод! 🤣🤣🤣🤣 Топовая лекция, спасибо за инфу, вы отличный преподаватель!
@PROPHESSOR4 жыл бұрын
Засланная пушка среди шаров просто убила XD
@U2VR_Channel5 жыл бұрын
"Лучший" camelCase все таки у Java. Классы с большой буквы, переменные и методы с маленькой, константы капсом с подчеркиванием. Пользуюсь им и на C++ и на C#. Позволяет отличать статические классы от объектов, у функций почти всегда ставятся скобки возле названия, так что тоже особых проблем не вызывает (только при колбэках/делегатах, где надо именно функцию как аргумент передать, что используется крайне редко). У Python же вообще какая-то каша рекомендована (как и у C#, к слову, у c/c++ вообще "давай все в нижнем регистре одним словом пиши"): Python and Ruby both recommend UpperCamelCase for class names, CAPITALIZED_WITH_UNDERSCORES for constants, and lowercase_separated_by_underscores for other names.
@Oleksiy7773 жыл бұрын
а ветвление match в python 3.10 переменные с подчеркиванием не поддерживает.
@sokxyz5 жыл бұрын
подача хорошая
@andrey75305 жыл бұрын
очередное спасибки
@shadowzyxi7585 жыл бұрын
А какая версия линукса у вас стоит?
@barkas25892 жыл бұрын
Спасибо
@Rostislav27rus5 жыл бұрын
с функций по типу OVAL( ) и SHARIK( ) выпал))
@АрсенийМракобесов-з5г5 жыл бұрын
чё смеялся как бешеный до слёз?
@yaroslav51685 жыл бұрын
В библиотеке graph есть функция oval() ... cs.mipt.ru/python #лабороторки :) cs.mipt.ru/python/lessons/lab3.html #здесь для решения используется граф Скачай его и поройся в нём, там должен быть oval() (я его использовал, он работает)
@Rostislav27rus5 жыл бұрын
@@yaroslav5168 окей, слово oval существует. Что насчёт sharik?
@yaroslav51684 жыл бұрын
@@Rostislav27rus Шарика там нет этот пёс убежал в Простоквашино :) Что на счёт SHARIK? Я не знаю. :( А если серьёзно то овал() это функция для создания ВСЕХ кругленьких :) обьектов и что ему помешало юзать один лишь овал не понятно... А вот после лазанья по коду мне стало ещё не понятнее... ЗАЧЕМ он это писал? def circle(x, y, R): x1 = x - R; y1 = y - R x2 = x + R; y2 = y + R return oval(x1, y1, x2, y2) #---------------------------------- def oval(x1, y1, x2, y2): x1, y1 = transformCoord ( x1, y1 ) x2, y2 = transformCoord ( x2, y2 ) _oval = _C.create_oval(x1, y1, x2, y2, outline = _penColor, width = _penSize, fill = _brushColor) return _oval
@Rostislav27rus4 жыл бұрын
@@yaroslav5168 ой, я в пайтоне не так чтобы шарю, так что хз
@question15395 жыл бұрын
НЕ соблюдён pep 8. Так сложно нажать ctrl+alt+l
@headcliff075 жыл бұрын
Спасибо!!!!
@АндрейКозюльский5 жыл бұрын
Я же гуманитарий. Почему я смотрю это и не могу остановиться?)
@lemonz16165 жыл бұрын
В одной из лекций говорилось что в программировании -- также есть гуманитарные элементы, и их довольно много.
@freelife10004 жыл бұрын
SHAR SILA!!!
@vatmanyan4 ай бұрын
А что, ну второй вариант был как раз отличным кандидатом под рефакторинг
@АндрейВоинов-п5ш5 жыл бұрын
Если не трудно могли бы поделиться.Кому вы проводите данные лекции(1 курс 2 мб еще выше)прото у нас нет ЯП от слова совсем приходится все учить в одиночку.Говорят ЯП-ы начнуся со 2 курса но ждать пока кто-то что-то объяснит глупо.Эх......Я достаточно не плох в программировании,но из-за забива на ЕГЭ попал как я понял не в лучшее место.Если знаете как можно перевестись в вуз получше посоветуйте что-нибудь. Препод адекватный и юмором мне такого не хватает.Для тех кто говорит,что он не шарит скажу так,человек пытается и старается объяснить у него это получается достаточно не плохо перед тем как говорить что он отстой знайте для кого-то такого препода рил не хватает
@hiyoutube67695 жыл бұрын
1:28 зачем извинятся?
@000ProstoFan0005 жыл бұрын
Зачем писать такой комент?
@hiyoutube67695 жыл бұрын
@@000ProstoFan000 извини чувак, я просто прогорел сегодня чуток , и все
@pavelkozlov68775 жыл бұрын
thumbs up!) for pushka pricel)))
@hammerhead835 жыл бұрын
Про Singleton. Объект синглтона может или быть в единственном экземпляре, или не быть вообще. Объекты которые всегда существуют только в единственном числе - статические!
@zhenshuang5 жыл бұрын
К чему это уточнение? Прямым текстом сказано на 44:02 "Если мы уж и создали класс, то он единственный". Ты жопой слушал?
@hammerhead835 жыл бұрын
@@zhenshuang Твоей жопой - упырь!
@zhenshuang5 жыл бұрын
@@hammerhead83 обиженка
@dmitryafanasiev35975 жыл бұрын
говнокод трудно допиливать!..)
@sir_incognito5 жыл бұрын
из говна конфетку?)
@neonchik67685 жыл бұрын
ООО знакомая тема
@neonchik67685 жыл бұрын
Особенно свой говно код
@kavelquu4 жыл бұрын
16:22 он рофлит? Просто 2 тут это сокращение "to"
@MyFearIsMyBlue4 жыл бұрын
гениально! =) вас надо минойскую письменности дешифрововать!
@kavelquu4 жыл бұрын
@@MyFearIsMyBlue да ландо, про то, что 2 значит to наверно знает каждый, кто хоть чуть-чуть учил английский
@ДимаТВАТВА4 жыл бұрын
@@kavelquu вообще-то "Two"
@kavelquu4 жыл бұрын
@@ДимаТВАТВА нет
@НикитаКайбышев4 жыл бұрын
Делайте клип на 1:06:03
@ЕгорМитрофанов-г7ъ5 жыл бұрын
А теперь представьте всю боль, когда приносят такой скрипт и говорят: вот тут при таких условиях происходит вот это, а мне нужно вон то, сделайте пожалуйста. И ты понимаешь, что лучше всё написать с нуля, но на это нет времени и приходится к этому дописывать "новый функционал". И во время процесса допиливания испытываешь нереальную боль.
@ВладиславГришин-ш7ш5 жыл бұрын
ржу. сам сейчас ковыряюсь не в своем коде. эмоции аналогичные. )) да и в своем бы ковырялся тоже самое было
@dsgnrr78704 жыл бұрын
Мм онлайн компилятор, круто
@ПетрФролов-е6г5 жыл бұрын
Не очень хороший программист по Python, но хороший преподаватель!
@DART2WADER5 жыл бұрын
kzbin.info/www/bejne/bZ7Ng6tsgJZmhbM Тройной brainfuck, или что такое безумие - Артём - Кашканов Комп на реле.
@RomRom_Guitar5 жыл бұрын
Никак не получается запустить gun.ру. Не импортирует hit_check (No module named 'hit_check'). Если его комментирую, то запускается и работает до первого выстрела. Собственно где этот hit_check впервые и встречается. pip install hit_check тоже не хочет в терминале. Куча красных ошибок. Система Linux mint 19.2. Кто-то может тоже столкнулся? Как решили? Спасибо заранее.
@RomRom_Guitar5 жыл бұрын
Ой, всё. Нашёл. Это оказывается не метод, а файл, который также выложен.
@andrey75305 жыл бұрын
@@RomRom_Guitar молодца ))
@paveldumavin50685 жыл бұрын
прикольно
@only60775 жыл бұрын
Ищу кто мне напишет Код для игры, либо же поможет переписать немножко КОД По ценам договоримся Либо же Тимофей Хирьянов хочу что бы вы работали на меня, Предоплата сомо собой вам будет видно что вы человек опытный. Очень нуждаюсь в таких людях!
@vladkrolik27002 жыл бұрын
Преподаватель очень Либеральный, надеюсь нету из-за этого проблем на работе
@romanticroman11 Жыл бұрын
Таких игр с оружием как в лесу деревьев . Учат создавать игры создающие мировоззрение разрушения , убийства , тоесть разложения , деградация личности пользователей таких игр . Тоесть таких программистов можно отнести к преступникам .
@zerocool4eg5 жыл бұрын
а почему в питоне сам бог велел снейк кейс использовать, если он назван в честь Монти Пайтона и к змеям не имеет никакого отношения?
@zerocool4eg5 жыл бұрын
@Валентин ещё 1 ... Вот из-за таких как ты и стала на лого змея, и про змей говорить в контексте пайтона начали ...
@freelife10005 жыл бұрын
1.08
@Александр-б1б6ш5 жыл бұрын
Ой не люблю ткинтер
@ДмитрийФролов-к2г5 жыл бұрын
+
@БольшойОтец-з2ы5 жыл бұрын
Лучше бы php втирал
@BlackShadow_865 жыл бұрын
Я работаю и со змеем и со слоном, для веба php, python для бзкэнда и работы с системой.
@БольшойОтец-з2ы5 жыл бұрын
@@BlackShadow_86 Смэрть грязнокровкам Только js и php