Код ревью тестового задания на юнити. Как зарефакторить код на c#

  Переглядів 17,179

Максим Крюков

Максим Крюков

3 роки тому

Разбираем код подписчика на c# в рамках тестового задания Junior Unity3D
Ссылка на Discord - / discord
Группа Игроделов - special3d
Теория делегатов и событий - • Делегаты и события в u...
Поддержка канала:
Patreon - www.patreon.com/user?u=32502669
В крипте:
BTC - 16WmTb4VTFGYrwEjjnMKNNMMzsMB1rPEqD
ETH - 0x8d35406f8317b846528d0a9ea4a34ce59968dff2
XRP - rLW9gnQo7BQhU6igk5keqYnH3TVrCxGRzm (TAG - 1438215071)
LTC- MNSWdzdVsUMnozSU5HhUPEscfxaUK3Fdck
#unity #кодревью #рефакторинг #ityoutubersru

КОМЕНТАРІ: 100
@user-gi9bg9rm5j
@user-gi9bg9rm5j 3 роки тому
Привет. Спасибо за разбор. Хотел бы парня поддержать который прислал код на тестовое. Во первых это смело! Во вторых он хоть как-то но работал. а значит задание выполнял. Ну а то что всем есть куда расти, это всегда так будет.
@vovanchik_ru4208
@vovanchik_ru4208 2 роки тому
жоска... но если бы не было этого парня, то где бы мы ещё увидели такой пример, да ещё появившийся естественным путём :) Это код произведение искусства, с точки зрения того как не надо делать ООП :)
@yatsuk_vitalii
@yatsuk_vitalii 3 роки тому
Спасибо за внятный разбор. В отличие от других, типа Сакутина, говорите по делу и без выражений "ну вы сами понимаете насколько это глупо"
@gaitavr1992
@gaitavr1992 3 роки тому
Сакутин шарит, но я против негатива
@vlpalamar8639
@vlpalamar8639 10 місяців тому
@@gaitavr1992 Сакутин несомненно шарит, но объясняют очень плохо. спасибо за конструктивный разбор
@Arko698
@Arko698 3 роки тому
Пока это самый толковый разбор тестового по юнити на русскоязычном ютубе
@gaitavr1992
@gaitavr1992 3 роки тому
Вот спасибо)
@mad-j9985
@mad-j9985 3 роки тому
Омг это прекрасно! Максим, спасибо огромное за столь качественный пример разбора!
@user-dm1mh5or1w
@user-dm1mh5or1w 3 роки тому
О, еще один годный канал по Unity и C# появился, отлично)
@NovaDev-Stormrage
@NovaDev-Stormrage 2 роки тому
объяснение огонь, музыки вообще шик, кайфанул, спасибо!
@alexandrk2822
@alexandrk2822 3 роки тому
Лучшее ревью юнитевого проекта которое видел на ютубе. С удовольствием посмотрел бы еще. Спасибо.
@gaitavr1992
@gaitavr1992 3 роки тому
Будет)
@artsemgorbatchev8999
@artsemgorbatchev8999 2 роки тому
Крутой и очень чиловый видос. Побольше бы такого контента) Спасибо автору и подопытному, Лайк!
@The_Mavrik
@The_Mavrik 2 роки тому
Клссный видос, подписываюсь. Интересно много ли таких разборов ошибок. Прям появилось желание чтоб код в моей первой игре так же проверили и поправили с подробным объяснением =))
@tsentler
@tsentler Рік тому
Чётко расписал и объяснил без лишнего кринжа. Спасибо, было полезно.
@user-nm5zh2zb8c
@user-nm5zh2zb8c 3 роки тому
Отличное видео и хороший пример с объяснением. Побольше бы такого. С рассмотрением разных типов ошибок
@gaitavr1992
@gaitavr1992 3 роки тому
Тут уж зависит от желающих рассмотреть их код. По работе, увы я не могу брать чужой код)
@user-nm5zh2zb8c
@user-nm5zh2zb8c 3 роки тому
@@gaitavr1992 я в дискуссию отправил ссылку на гит. Если посчитаешь нужным показать ошибки. То можешь его использовать. + Я ещё заранее сбрасывал. На то что скинул даю добро. Главное чтобы у тебя было время и желание. )
@gaitavr1992
@gaitavr1992 3 роки тому
Не нашел, может ссылки съело. Если что - отправляй в дискорд или на мейл - maksym.kriukov@gmail.com
@2PANZER2
@2PANZER2 2 роки тому
музыка из hl2(cp violation), уважаемо Отличный контент, хорошо преподносится и без токсичности
@user-we6si4mi3x
@user-we6si4mi3x Рік тому
Спасибо за проделанную работу ! :)
@evilvirraZzz
@evilvirraZzz 3 роки тому
Интересно интересно. Глянем.
@karimkimsanbaev7932
@karimkimsanbaev7932 6 місяців тому
Музыка идеально подходит под видео)
@user-bc4me5kz7j
@user-bc4me5kz7j 3 роки тому
Спасибо за контент
@Natural_Mindset
@Natural_Mindset 3 роки тому
Хорошо, хорошо)
@user-nm5zh2zb8c
@user-nm5zh2zb8c 3 роки тому
Самое просматриваемое видео за две недели.
@alexeybolotov9857
@alexeybolotov9857 2 роки тому
Отличный разбор. Это тестовое на какую то конкретную вакансию в команде?
@askaranarbekov3145
@askaranarbekov3145 3 роки тому
классно
@Diyozen
@Diyozen 3 роки тому
8:00 - вынес подписку на событие в метод Init, но не отписался. Возможна переинициализация. Я бы перед подпиской чекал объект на null, и если тот есть, то отписывался, а затем уже присваивал ему новый. Из самых распространенных ошибок - платные символы на клавиатуре. Иначе объяснить нежелание разносить всё на маленькие считываемые и обозримые методы - невозможно) Прикольная рубрика. Ещё бы код на исходник и результат работы для сравнения и возможности самому покопаться : )
@gaitavr1992
@gaitavr1992 3 роки тому
Про отписку все верно, а про сорсы тут не могу, так как код не мой, я его просто чуть порефакторил)
@TrickyTomcat
@TrickyTomcat 3 роки тому
(...Иначе объяснить нежелание разносить всё на маленькие считываемые и обозримые методы - невозможно...) вполне возможно. 1. Новички не вполне владеют навыком функциональной декомпозиции, то приходит с годами и строчками просмотренного или написанного кода. 2. Современные средства разаботки расслабляют, пиши "километровый" метод, потом плюсик нажимай и сворачивай по блокам. 3. Уходит в прошлое то время как перед тем как написать десять строк кода, два блокнота исчертил формулами --- думать и конструировать сначала на бумаге с ручкой. И последнее это наверное ,чем можно объяснить , парадигмамы аберрируещего сознания вида: "держать код перед глазами", "как мне удобно", "а зачем менять и так работает" (неуверенновсть в себе, и то что новый подход не принесёт новых багов), всё это следствия первой и второй причины. Недосточно практического опыта, я бы так подытожил. Хотя мне по душе, ваше объяснение --- непомерная плата за каждый напечатаный символ.
@WeslomPo
@WeslomPo 3 роки тому
Хорошо разобрал! Имхо самые распротранённые и подлые ошибки, это копипаста. За ней первое место, все при копировании допускают ошибки, забыв поменять что либо. Или поленившись и скопировав какой-то код полностью (как в видео, например) создавая сложности поддержки кода. Второе место это проверка на null. Её допускают все джуны и малоопытные программисты - без исключения. Заключается в том, что когда они получают NRE - то не разбираются в проблеме, а добавляют проверку if (something != null), проверяют - вроде бы все работает и забывает. Самое смешное что потом через какое-то время NRE выскочет опять, и они снова проверят на null и загонят эту ошибку ещё глубже, когда как нужно было обратиться к источнику, найти какого чёрта в переменной null а мы всё еще работаем. Иногда проверяют на null и создают пустой объект на замену xD что ещё веселее исправлять. В общем такой вот топ 2 ошибок.
@gaitavr1992
@gaitavr1992 3 роки тому
Да, тут лучше придерживаться принципа fail first
@nullptr_or_null8301
@nullptr_or_null8301 3 роки тому
"Иногда проверяют на null и создают пустой объект на замену xD что ещё веселее исправлять" - это просто эпично, неужели такие индивиды встречаются? P.S. "Имхо самые распротранённые и подлые ошибки, это копипаста." - таких наверно 90%, они наверно даже не разбираются что там и как работает, и почему и правильно ли, автор этого кода, так написал.
@nullptr_or_null8301
@nullptr_or_null8301 3 роки тому
Очень сочувствую ревьювирам, которым в миллионный раз приходится видеть копипасту, это просто необходимо иметь железную выдержку, чтобы не отстреливать таких долбодятлов сразу.
@WeslomPo
@WeslomPo 3 роки тому
@@nullptr_or_null8301 о нет, это не страшная копипаста, когда копируют целым классом. Страшне когда копируют одну две строчку, и забывают поменять параметр. Например какой нибудь вектор, и компонент x заменить на y забывают, вот такая копипаста самая мерзосная.
@volodymyrfedorov1431
@volodymyrfedorov1431 3 роки тому
@@nullptr_or_null8301 как раз, они и отстреливаются xD видишь такие вещи на ревью ТЗ - и скорее всего человека на собес уже не позовут. Разве что это единичная проблема, и остальной код вылезаный. Что вряд ли, иначе и этого копипаста не было бы.
@Beatle_DEV
@Beatle_DEV 2 роки тому
Хороший розбор. Можно видео без музыки ? Сбивает с мысли
@tomasgammister5776
@tomasgammister5776 2 роки тому
Максим, не могли бы вы осветить тему проектирования на любом примере паттерна, только для начально-среднего уровня? Помедленнее и в каком порядке вы строите систему. С каких скриптов начинаете и как заканчиваете. Что бы код писали по ходу дела. И какие скрипты на какие ключевые объекты вы вешаете. Некоторые ролики посмотрел по нескольку раз. Но все равно сажусь в движок и сразу ступор. Когда все это показывается в визуал студио и уже готовыми скриптами сложно въехать в то, как сам процесс проходил. С уважением, ваш подписчик. ))
@gaitavr1992
@gaitavr1992 2 роки тому
Я очень редко применяю паттерны с нуля. Они должны решать проблему, а пока она не появилась или потенциально не видна - просто пишу код, решающий задачи
@tomasgammister5776
@tomasgammister5776 2 роки тому
Я понял вас. Имею в виду как добиться максимально не связанный код. Пошагово на простом примере. Про это. И если покажете применение интерфейсов и связанных с ними попутных приемов именно в плане архитектуры, будет клёво . Типа как уроки Гоши Дударя только с вашим уровнем :)
@timurnikolaev1438
@timurnikolaev1438 2 роки тому
привет, могу добавить свое тестовое в очередь на рассмотрение?(если ты этим еще занимаешься)
@absamurai
@absamurai 10 місяців тому
Хотелось бы такого же, но про более-менее нормальный код изначально. Т.е. когда человек скорее архитектурные ошибки допускает, а не творит явную дичь. P.S. Поясните, может я глупый и не понимаю, что это реалити и так пишет каждый 2-й или 5-й разраб/кандидат в разрабы? Я как бы встречал WTF-код типа такого, но в процентном соотношении можно сказать не часто.
@Lorekeepper
@Lorekeepper 3 роки тому
спасибо, полезно, но вот зачем громкая музыка на фоне?
@gaitavr1992
@gaitavr1992 3 роки тому
Музыку изначально добавлял для фона, когда ничего не говорю, а потом при загрузке на ютуб обнаружил, что громче получилось, чем в редакторе
@seldemirov
@seldemirov 3 роки тому
@@gaitavr1992 Да. Музыка в кассу. Но слишком громко относительно голоса. Спасибо за разбор. Информативно.
@ilyanazarov7001
@ilyanazarov7001 2 роки тому
Спасибо за видео! По поводу инициализации объектов и Script Execution Order - я ставлю в приоритет высокоуровневый GameManager, предоставляющий доступ к другим низкоуровневым менеджерам, чтобы он первым успел стать синглтоном. Ссылки на другие менеджеры в нем я делаю через инспектор. Не знаю, насколько это правильно, хотел бы узнать мнение опытных товарищей. И еще хотел бы узнать ваше мнение про использование парадигм MVC/MVP/... в Unity. Все о них говорят, в вакансиях везде требуют, но внятной реализации на реальном примере я ни у кого не видел.
@rikygoxd5472
@rikygoxd5472 7 місяців тому
Это ServiceLocator паттерн, когда у тебя один синглтон и в нем ссылки на все остальные сервисы и ты через его инстанс получаешься доступ
@user-yb2xf7lc1n
@user-yb2xf7lc1n 3 роки тому
Музыка из Халф Лайф
@alice_wolfraider_gamdv
@alice_wolfraider_gamdv 3 роки тому
:)
@HefesTBunker
@HefesTBunker 2 роки тому
Воу я делал такое же тестовое))) походу в ту же контору) К счастью проект на видео не мой)
@NoldoWalker
@NoldoWalker 3 роки тому
AppStart тоже название метода :) Скорее тогда уж Application или ApplicationController или MainController
@gaitavr1992
@gaitavr1992 3 роки тому
Как раз нет) StartApp да, но это не только глагол, ApplicationStart это уже название процесса, то есть существительное
@NoldoWalker
@NoldoWalker 3 роки тому
@@gaitavr1992 спорный вопрос, учитывая что мы рускоязычные разработчки использующие английский, я бы предпочел однозначность наименований :) но это видимо привычка к кодстайлу на моем проекте..
@NoldoWalker
@NoldoWalker 3 роки тому
@@gaitavr1992 То есть еслиб это был AppStarter тогдаб вопросов не было. Так как Старт это все таки глагол, вне зависимости от места нахождения.
@gaitavr1992
@gaitavr1992 3 роки тому
Лучше уже AppInitializer. Контроллер плохо, не говорит, какая зона ответственности у класса
@NoldoWalker
@NoldoWalker 3 роки тому
@@gaitavr1992 согласен, просто контроллер - вебовская профдеформация.
@beginses5641
@beginses5641 2 роки тому
А если я буду изменять время мне предется переписывать почти всё?
@nightyonetwothree
@nightyonetwothree 2 роки тому
думаю в ините() хиро стоит отписываться от старого провайдера (если есть) прежде всего. Вдруг будет ре-инициализация "на лету".
@danycall9457
@danycall9457 3 роки тому
Скажите пожалуйста, как называется тема, которую вы используете в Rider?
@gaitavr1992
@gaitavr1992 3 роки тому
Visual studio dark
@danycall9457
@danycall9457 3 роки тому
@@gaitavr1992 Спасибо вам большое)
@vladyan01
@vladyan01 2 роки тому
Этому нереально научиться (((
@Pravda-bw3tj
@Pravda-bw3tj 2 роки тому
HeroSpawner Ezzji
@user-pm4ec5em4p
@user-pm4ec5em4p 10 місяців тому
Перемудрил, короче, парень )
@dipyalov
@dipyalov 3 роки тому
4 класса с копипастой: ууу, говнокод джуниора, так нельзя писать, повторное использование, DRY!!!! 4 класса с копипастой и пояснением, что это заглушки чтобы выполнить условие ТЗ: логичное решение
@kaburo8097
@kaburo8097 Рік тому
Как? КАк мне начать это всё понимать учу вроде бы всё что надо но ничего не понимаю
@vlpalamar8639
@vlpalamar8639 10 місяців тому
для этого нужно научится задавать вопросы)
@user-gl2bt1on5p
@user-gl2bt1on5p 2 роки тому
Что такое [SerializeField] а самоое главное почему в [ ] скобках ? Как это понять
@gaitavr1992
@gaitavr1992 2 роки тому
У меня есть видео про атрибуты, посмотрите
@vlpalamar8639
@vlpalamar8639 10 місяців тому
в [ ] пишутся с# атрибуты
@bibyter6451
@bibyter6451 3 роки тому
Виртуальные методы, ух🙁
@gaitavr1992
@gaitavr1992 3 роки тому
Чаще больше вреда)
@modjaid3907
@modjaid3907 3 роки тому
а зачем музыку так громко врубать? Откуда вообще такая мля мода пошла?
@gaitavr1992
@gaitavr1992 3 роки тому
Да, это я не подумал, нужно было сначала вам на ревью отправить исходный файл
@Mightimus
@Mightimus 3 роки тому
while(true)
@gaitavr1992
@gaitavr1992 3 роки тому
В рамках этого задания это мелочи)
@Sasha2dx
@Sasha2dx 3 роки тому
Тебе.
@gaitavr1992
@gaitavr1992 3 роки тому
Окей, создавайте буль и будет вас счастье
@Mightimus
@Mightimus 3 роки тому
@@Sasha2dx лол, эт типо игра дурак, сам дурак? :) Обоснуй
@user-mf5oh8bw6b
@user-mf5oh8bw6b 3 роки тому
@@Mightimus Расскажите плиз. Почему это плохо?
@SoferPeOZN
@SoferPeOZN 2 роки тому
музыка дурацкая
@user-bp5qu9ie5o
@user-bp5qu9ie5o Рік тому
Пхпхпх, какой кринж
LIVE - Парад Победы в Москве. 9 Мая 2024
2:27:56
AKIpress news
Переглядів 2,2 млн
Історія загиблого Назара Небожинського
00:54
Суспільне Рівне
Переглядів 865 тис.
ISSEI funny story😂😂😂Strange World | Magic Lips💋
00:36
ISSEI / いっせい
Переглядів 94 млн
Піхотинці - про потребу у людях
00:57
Суспільне Новини
Переглядів 952 тис.
Паттерн декоратор в unity3D
8:00
Максим Крюков
Переглядів 18 тис.
Делегаты и события в unity за 10 минут
11:14
Максим Крюков
Переглядів 29 тис.
Dependencies in Unity
8:24
Infallible Code
Переглядів 30 тис.
How to do pause in unity3D
8:55
Максим Крюков
Переглядів 17 тис.
Паттерн наблюдатель в unity3D
6:56
Максим Крюков
Переглядів 25 тис.
LIVE - Парад Победы в Москве. 9 Мая 2024
2:27:56
AKIpress news
Переглядів 2,2 млн