+ Расскажите в чем его смысл вообще. А то после 5 минут в гугле я не особо понял зачем он нужен и в чем его полезность
Замена синглтону.
Синглтону как шаблону проектирования? Чет тогда стремно, я и сам руками синглтонить могу
DI. Если коротко - суть в том что объекты не будут связаны тобой. Отсюда все плюсы - если нужно внедрять зависимость - за тебя это сделает DI, если нужно менять реализацию - достаточно в одном месте перерегистрировать её, и вот, весь проект будет использовать то что надо.
О! А ты шаришь за Zenject?
не стрёмно, изучай что такое DI/IoC
Смотрел видосики, хотел себе внедрять. На юнити, по причине того что есть особенности работы с памятью, zenject выглядит каким то костылём, но для тех кто живёт на IoC, это не проблема, адаптируются. Тут вопрос ты себе должен задать - хочешь ли изучать что то новое, планируешь развивать проект, будешь ли мириться с тем, что придётся переписать многое (если проект не с нуля), при этом не поменять в нём толком ничего, кроме жизненного цикла объектов (спорно, особенно для объектов которые являются объектами юнити) и крутого функционала по работе со связностью объектов между собой (это довольно круто в больших и крупных проектах, в тех где всё постоянно меняется и код переписывается, рефакторится)
Ну, я просто смотрю, что много кто требует zenject, вот и пытаюсь изучить, хотя вот - по началу жёсткая тупая(наверное) ошибка, ибо хз как работает.
Да, требуют, потому что это инструмент который позволяет работать с крупными проектами. Все хотят легко доработки делать, а не править тоны кода при очередной доработке, вносить регресс из-за того что где то что то забыли и т.д. Лучше всего начни с IoC. Это более общая концепция идеи, а вот DI более частный случай подхода, а уже zenject - это прям реализация, одна из очень многих.
Опишу свою точку зрения (игры давно делаю, но зенджект начал недавно осваивать, так что опытом работы с ним похвастать не могу). - Зенджект помогает писать проекты не превращая их в паутину ссылок на префабы/объекты/настройки и т.д.. К примеру без зенджекта у тебя в уровне могут быть ссылки на юнитов, у юнитов ссылки на игрока/UI/настройки и еще бог знает на что, а у них ссылки еще на что то и т.д.. Ссылки могут прокидываться как в инспекторе так и напрямую в классы. Уровней, врагов и прочего может быть много и у каждой реализации надо будет прокидывать ссылки. В итоге на больших проектах может получиться довольно запутанный клубок который сильно усложнит разработку. Запросто можно забыть прокинуть где- то нужную ссылку или поменять, в результате чего отхватишь много проблем. Или что наверно более часто встречающееся, если понадобится заменить какую то ссылку использующуюся в разных местах проекта, то придется искать все места где эта ссылка указывается и надеется что ничего не упустил. В случае с зенджектом, все ссылки ты агрегируешь в одном месте и пишешь инструкции как их внедрять. Внедряются эти ссылки упрощенно говоря одной строчкой с добавлением агрумента inject. Если без зенджекта допустим ссылка на UI прокидывалась через инспектор и код был явно связан с этим UI, то с зенджектом ты пишешь одну строчку в нужном классе и он получает ссылку на этот UI, без взаимодействия с инспектором или отдельного закидывания через другие классы. При необходимости заменить UI везде, не придется искать поля в инспекторе у всех объектом или куски кода которые давали ссылку на UI, а достаточно будет в одном месте с настройкой зенджекта заменить ссылку. Так же а некоторых случаях не надо думать как прокинуть ссылку через несколько классов (допустим ui-level-enemy-bar) а просто указать в классе bar поле [inject] private Ui _ui; - в плане синглтона, да зенджект позволяет его более грамотно реализовать, но это лишь один конкретный случай использования - в мелких проектах я для себя не вижу смысла использовать зенджект, там ссылок не так много и проще их без него прокинуть. По идее он для больших проектом должен быть очень полезен - ну и чем вкуснее вакансия, тем больше шансов что там в требованиях есть зенджект Если где неправ, знатоков прошу поправьте) Это полотно в том числе и для себя написал
Всю жизнь на плюсах сами солиды внедряли, а тут зенжект какой-то сам все делает 🤣
Обсуждают сегодня