Почему я вернулся на Dagger. Пока Koin

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ส.ค. 2024
  • Я пользовался Koin и агитировал за него, но вернулся на Dagger и рад этому. Почему? Всё в видео. Смотрите!
    🔗 Avito.Tech avito.tech/
    💰 Поддержать проект на Boosty bit.ly/3sratqQ или Patreon / android_broadcast
    🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast
    #AndroidBroadcast #Dagger #Koin #КириллРозов #РозовКирилл
    0:00 Вступление
    0:32 Плюсы и минусы Koin
    2:09 Интеграция от АвитоТех
    2:41 Проблем Koin
    3:43 Почему Dagger снова стал привлекательным?
    5:47 Интеграция Dagger с Android Studio
    7:30 DI в многомодульных проектах
    10:38 Заключение

ความคิดเห็น • 100

  • @AndroidBroadcast
    @AndroidBroadcast  3 ปีที่แล้ว

    🔗 Avito.Tech avito.tech/
    💰 Поддержать проект на Boosty bit.ly/3sratqQ или Patreon patreon.com/android_broadcast
    🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast

  • @yakiv1488
    @yakiv1488 2 ปีที่แล้ว +31

    Чтобы не получать ошибки в рантайме нужно думать как ошибки в рантайте ☝

  • @user-og2wp2qy5i
    @user-og2wp2qy5i 2 ปีที่แล้ว +4

    Пользуюсь на текущем kodein.
    Обладает всеми плюсами koin. Помимо этого api не ломается на минорных апдейтах, а проблема с аргументами решена запретом передавать больше одного аргумента (больше одного аргумента - завернул это все в класс и передал).

  • @september669
    @september669 2 ปีที่แล้ว +7

    На последнем проекте выбрал Kodein.
    Потому что мультиплатформа, простота относительно даггера, дебаг ошибок вообще элементарный.

  • @pro9990
    @pro9990 2 ปีที่แล้ว +1

    Лично мне удобно использовать dagger даже на маленьком проекте.
    DependencyInjection это очень крутая штука которая автоматически подставляет все инстансы где они необходимы и освобождает от необходимости вручную сопоставлять зависимости как это нужно было бы делать в ServiceLocator.
    Это главное преимущество даггера, которого нету ни в каких других фреймворках. А тем более это очень помогает когда в проекте несколько сотен модулей.
    Но единственное что удручает это скорость сборки, потому что добавляется генерация кода, потом его дополнительная компиляция, а при переходе между ветками кэш ломается и начинает собирать опять по новой.
    Koin же предпочитаю использовать только в сдк приложениях, когда есть только ограниченный функционал, в котором уверен что он не разрастется

  • @alex5381
    @alex5381 2 ปีที่แล้ว +2

    Если в вакансии среди технологий стоит Dagger2, то подразумевается Hilt? Или нужно уметь работать именно с Dagger2? Я читал что у Hilt есть ограничения для больших проектов.

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +3

      Скорее всего нужно иметь работать с Dagger 2. Hilt простая настройка поверх и его надо изучить, что быстро

  • @Nidvoraich
    @Nidvoraich 11 หลายเดือนก่อน

    Недавно открыл для себя тему инъекции зависимостей.
    Стою на распутье. Даггер? Коин? Хилт?
    Время не поджимает особо. Ковыряю маленький проектик чисто в целях познания теэнологий на практике.
    Что может пригодиться больше на собесах? И кто из них имеет графические подсказки в студии (значки завистимстей слева от кода как в Интелидж Идее со Спрингом)?
    Спасибо за ответы :)

  • @lordraiden_do
    @lordraiden_do 2 ปีที่แล้ว

    Спс за видео! Я вибираю koin для небольших проектов, мне он нравиться за быстроту внедрения и лаконичный код, даггер успользую только на одном большом проекте, да и то, ругался на него изза времени сборки, хотел на koin переписать, однако купил недавно mac на m1, и теперь уже как-то пофиг. В новых проектах хочу конечно попробовать уже hilt.

  • @DaniilK-hq5go
    @DaniilK-hq5go ปีที่แล้ว +1

    а где покупал такие стикеры (на планшете)?

    • @AndroidBroadcast
      @AndroidBroadcast  ปีที่แล้ว

      Собрал по конференциям

  • @maxl9543
    @maxl9543 ปีที่แล้ว

    А как быть с мультиплатформой?

  • @arseni1453
    @arseni1453 2 ปีที่แล้ว +1

    Чем понятнее код, тем лучше, Koin one love :)

  • @MrKizup
    @MrKizup 2 ปีที่แล้ว

    Делали большой проект, с кучей модулей, часть из которых доставлялись зависимостями отдельными. Выбрали hilt в качестве di. Горя конечно мы с ним хапнули при его инициализации в модулях. Но там есть небольшой костылик, с помощью которого все получилось разрулить.
    В любом случае на данный момент склоняюсь больше к hilt'у - с ни намного проще начать проект и тулинг просто супер. В koin больше всего не нравилось отсутствие проверок графа на этапе компиляции, а писать тесты и все это настраивать нет времени, а тем более есть проект на фрилансе.

  • @alekseyorekhov9095
    @alekseyorekhov9095 2 ปีที่แล้ว

    Проверка проходит на регрессе в ci, на счёт многомодульности проблем нет, код не генерится, очень быстро собирается. Как сервис локатор работает вполне себе неплохо. Но рефакторинг одних и тех же модулей разными командами однозначно больно даётся.

  • @scraplesh
    @scraplesh 2 ปีที่แล้ว +1

    Я выбираю обе библиотеки, обе удобные, с обеими делал многомодульные проекты, никаких особых проблем не ощутил.

    • @garri5108
      @garri5108 2 ปีที่แล้ว

      Feature модули?

  • @720pXD
    @720pXD 2 ปีที่แล้ว +5

    Крутая интеграция библиотек гугла друг с другом и с Android Studio очень мотивирует целиком переходить на их технологии, что имеет обратную сторону в виде отмирания других подходов и библиотек, что может в будущем негативно сказаться на Android разработке в целом, но посмотрим что там выйдет)

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +2

      С одной стороны да, с другой - никто не мешает писать свои плагины. Для этого нужны ресурсы + нужно поддерживать

  • @user-oc7py1vy6s
    @user-oc7py1vy6s 2 ปีที่แล้ว +8

    06:00
    У Compose нет визуального редактора. Точнее он как-бы есть, но намного быстрее проверить изменения макета запустив приложение.

    • @bolnoi8
      @bolnoi8 2 ปีที่แล้ว +1

      Это пока, он же только релизнулся

    • @juneuniversum
      @juneuniversum 2 ปีที่แล้ว

      @@bolnoi8 именно что релизнулся, а не в бету перешёл.

    • @bolnoi8
      @bolnoi8 2 ปีที่แล้ว

      @@juneuniversum это к чему? На релизе андроид лейаутов превью вообще не было

    • @juneuniversum
      @juneuniversum 2 ปีที่แล้ว

      @@bolnoi8 к низкому качеству тулинга. Что он релизнулся, но по факту, как будто в бету вышел, и до сих пор не юзабельный.
      Качество хромает.

    • @bolnoi8
      @bolnoi8 2 ปีที่แล้ว

      @@juneuniversum слово релиз ничего не значит, до появления андроид студии тулзов вообще не было, хотя андроид фреймворк был в релизе

  • @VoroninSergey
    @VoroninSergey 2 ปีที่แล้ว +1

    В koin поддержка аргументов уже как несколько месяцев реализована, они поставляются автоматически

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +1

      То что она есть, я знаю, но работа с ними никак не проверяется и при изменения набора аргументов у зависимости, место где они передаются никак не знает об этом

    • @suhocki
      @suhocki 2 ปีที่แล้ว +3

      @@AndroidBroadcast а как в dagger этот момент, проверяется в компайл-тайме? Насколько я знаю, нет. Иначе в dagger не было бы выброса исключений в духе "не найдено провайдера для такой-то зависимости".

  • @garri5108
    @garri5108 2 ปีที่แล้ว

    Хотел бы увидеть что конкретно в фича модулях коин не могёт

  • @beginnercoding1089
    @beginnercoding1089 2 ปีที่แล้ว +2

    Кирилл, а когда выйдет урок по многомодульности c dagger2?

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว

      Уже в сентября. Я взял небольшой отпуск, да и старые видео плохо смотрели. Этот выпуск - давно записанный уже

  • @paulsoja2732
    @paulsoja2732 2 ปีที่แล้ว

    в последнем проекте выбрал hilt. Это был средних размеров проект. Мне hilt вполне зашел. Буду юзать его и в следующем проекте.

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว

      Много модулей или один?

    • @paulsoja2732
      @paulsoja2732 2 ปีที่แล้ว

      @@AndroidBroadcast один модуль, не люблю я многомодульность.

  • @radpem
    @radpem 2 ปีที่แล้ว +1

    Выбрал Hilt тк проще запустить для небольшого проекта Андройд. Так же это плюс для больших команд тк люди быстрее вливаются и начинают писать тесты/ фичи

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +1

      Да, правильно сделали!

  • @alexandrromanishin9906
    @alexandrromanishin9906 2 ปีที่แล้ว +5

    Имею опыт перевода двух больших проектов с Даггера на Коин, ибо даггер в мультимодульном проекте это большая попоболь. + Он реально сложен, с кучей фичей, каждый проект по своему его интегрирует и почти каждый делает это плохо.
    У коина намного все прозаичнее и понятнее, за это его и любят. (Между прочим знакомство с Коином начал после Вашего доклада, Кирилл)
    В общем, аргументы приведенные в видео нерелевантны, имхо.
    Выглядит и правда как переобувание для личных целей.
    А мой совет: сделать вместе с обучалками даггеру, обучалку для коина. Судя по комьюнити это зайдет лучше, чем даггер.

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +1

      Я буду рад обсудить опыт, чтобы понять что я делал не так с Koin. Пиши в личку t.me/krlrozov

  • @uncledoc123
    @uncledoc123 2 ปีที่แล้ว +7

    На коине проще и меньше кода писать нужно, а чтобы ошибки в рантайме не возникали - нужно просто не пользоваться именными параметрами конструкторов

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +1

      Есть Hilt. С ним томе мало кода

    • @scraplesh
      @scraplesh 2 ปีที่แล้ว

      ​@@AndroidBroadcast Меня немного утомляют AssistedFactory, в коине с передачей параметров проще.

    • @VoroninSergey
      @VoroninSergey 2 ปีที่แล้ว

      Я пишу и Android и back. В бэке hilt вроде как работать не будет?

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว

      Hilt история только про Android, так что да, на беке работать не будет. Хотя упрощение Dagger через Hilt может быть полезно многим. Ещё надо будет компнуть глубже, возможно я и ошибаюсь

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว

      Согласен, только реализация нужная простая и с проверкой во время компиляции. Как добиться?

  • @radpem
    @radpem 2 ปีที่แล้ว +5

    Почему не Hilt?

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +3

      Фактически Hilt - это Dagger. Ничего против не имею, но в больших проектах с ним боль и с модуляризацией проблемы

  • @viktorv5228
    @viktorv5228 2 ปีที่แล้ว +2

    Многомодульный проект с Hilt - проблем нет

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว

      Супер! Буду рад обсудить опыт в личке t.me/krlrozov

  • @Chernov1984
    @Chernov1984 2 ปีที่แล้ว

    +

  • @user-zi8zw3yf2t
    @user-zi8zw3yf2t 2 ปีที่แล้ว

    Ну хэзэ, говорят коин для котлина, а Даггер для джабы

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว

      Да, такое есть, но в рамках Android разработки это принципиально?

    • @user-zi8zw3yf2t
      @user-zi8zw3yf2t 2 ปีที่แล้ว

      @@AndroidBroadcast не слышал такого

    • @user-zi8zw3yf2t
      @user-zi8zw3yf2t 2 ปีที่แล้ว

      @@AndroidBroadcast но самому стало глаза мозолить от аннотаций в котлине

  • @isanechek
    @isanechek 2 ปีที่แล้ว +2

    Реклама курса про даггер. Мы поняли. Тушите свет - расходимся.
    Ps vУ каждого инструмента своё предназначение. То что даггер на больших проектах удобнее это факт, но коин не становится автоматом плохим. Не надо никуда возвращаться, просто надо выбирать инструмент по задачам.

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +1

      Вот вообще его делал не для рекламы, а потому что попросили подробнее раскрыть эту тему, которая проскальзывала. Да и курс что посмотрят, что нет мне всё равно. Богаче не стану )

    • @isanechek
      @isanechek 2 ปีที่แล้ว

      @@AndroidBroadcast дело не в деньгах, а трудах. Курс то хороший, просто не всем кто его просил под силу пройти его от начала до конца. Как всегда больше криков)

  • @Dunmeri
    @Dunmeri 2 ปีที่แล้ว +17

    Вывод такой: ты вернулся с dagger на koin потому, что (ты говоришь о бООООльшом проекте с модулями)
    1 Нет простейшего UI-теста на каком-нибуль kaspresso, который запускается на CI/CD, и просто проклацает приложение. Это прям нубство нубское в большом® сложном® приложении® той-самой-крутой-компании-в-которой-работаю®
    2 Обновляешь либу без просмотра релиз-нот, без оценки необходимости. Это уровень джуниора, но никак не выше.
    Посмотреть бы код. Очень часто проблемы возникают из-за того, что на DI/SL кидают то, чего там быть не должно, особенно часто: инициализация retrofit/okhttp/cert pinning.
    Ни разу не было проблемы с koin в прод/препрод/тесте как на мелких проектах, так и на больших® с® кучей® разрабов® и® модулей® и овер 50к кода®
    В общем, катить бочку на фреймворк, если не умеешь в организацию процесса разработки - очень странно...

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +5

      И этот вывод сделан был по одному видео? Вы также собесы проводите?

    • @suhocki
      @suhocki 2 ปีที่แล้ว +1

      А почему вы посчитали, что автор обновляет либу без просмотра релиз-нот и без оценки необходимости?

    • @AndroidBroadcast
      @AndroidBroadcast  2 ปีที่แล้ว +2

      Я так понял это был наброс в сторону меня, что я обновляю так

    • @ildar.ishalin.chelovek
      @ildar.ishalin.chelovek 2 ปีที่แล้ว +1

      А где вы делаете инициализацию okhttp, retrofit, etc?