Каковы конкретные преимущества использования DI на Android?

Каковы конкретные преимущества или преимущества использования рамки внедрения зависимостей для Android, например Dagger, Transfuse или RoboGuice?

Например, какие приложения больше всего выиграют от использования DI? есть ли больше преимуществ производительности, или это больше зависит от удобства расширения приложения или даже более того, чтобы сделать его пригодным для тестирования?

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

Спасибо!

Ответы

Ответ 1

Например, какие приложения больше всего выиграют от использования DI?

Включение зависимостей (как шаблон, а не библиотека) приносит пользу почти всему коду.

  • Он способствует разработке модульных компонентов, которые предоставляют только необходимые API, необходимые для выполнения определенного действия. Когда вы вынуждены разбить кусочки ваших приложений, вам нужно подумать о том, сколько деталей реализации нужно раскрывать, как ведет себя API, и о видимости классов и методов.
  • Он способствует логическим абстракциям компонентов (думаю: интерфейсы и их реализации). Вы, конечно, не должны это делать, но в конечном итоге это происходит органично, тем больше вы делаете вещи.
  • Это облегчает тестируемость, создавая единую точку потребления типа, через которую класс получает то, что ему нужно. Необходимо заменить Foo на TestFoo? Нет проблем.

Есть ли больше преимуществ производительности?

Нет. Библиотеки инъекций зависимостей существуют исключительно для уменьшения шаблона вокруг шаблона и увеличения декларативной способности запрашивать зависимости.

Является ли это более простотой расширения приложения?

Совершенно верно. Хотя я бы никогда не рекомендовал использовать Guice (или RoboGuice) в приложении для Android, вводный разговор с Guice из Google I/O - это фантастическое представление о том, почему инъекция зависимости важна в этой связи.

Еще больше о том, чтобы сделать его пригодным для тестирования?

Да и нет. Это счастливый побочный эффект правильной абстракции и модуляции. Тестирование - отличная вещь, так что тот факт, что инъекция зависимости предлагает легкость в этом, также хороша.

Я недавно рассказал о кинжале в контексте Android, который вы можете смотреть или просматривать слайды. Разговор начинается с инъекции зависимостей в виде рисунка, а затем переходит к тому, как кинжал уменьшает шаблон и позволяет использовать некоторые довольно интересные функции.

Я также сделал довольно продвинутое примерное приложение, которое использует Кинжал для сложных инъекционных прецедентов, которые также могут стоить проверить.

* В настоящее время разговор не является бесплатным, но станет таким в какой-то момент в следующие 10 месяцев.