Комментарии 4
Ну вот опять как и в прошлой статье
Тут будет краш в рантайме при определенном стечении обстоятельств
Вот простое решение которое однозначно скажет всем INSTANCE не может быть null что и требуется
но если уж хочется что бы нул был так и get() должен возвращать null
а для обращения к null в котлин используется оператор безопасного вызова —
Кроме этого функция —
тем самым ограничив область использования
fun get(): MyMvpApp = INSTANCE!!
Тут будет краш в рантайме при определенном стечении обстоятельств
Вот простое решение которое однозначно скажет всем INSTANCE не может быть null что и требуется
companion object {
private lateinit var INSTANCE: MyMvpApp
@JvmStatic
fun get(): MyMvpApp = INSTANCE
}
но если уж хочется что бы нул был так и get() должен возвращать null
а для обращения к null в котлин используется оператор безопасного вызова —
?
его и надо использовать чтобы код оставался безопасным и надежным.Кроме этого функция —
fun get(): MyMvpApp
провоцирует использовать фактически синглтон MyMvpApp.get() повсеместно где нужен контекст, тут разумнее было бы вернуть AppDiComponent т.е.companion object {
fun getInjector(): AppDiComponent = INJECTOR
}
тем самым ограничив область использования
Если у модуля конструктор без параметров то его не нужно указывать при построении компонента. В данном случае конструкция
Избыточна
.mainScreenModule(MainScreenModule())
Избыточна
Ваша статья нацелена на новичков в Android, так что же вы описывая dagger2 не потрудились описать зачем нужны все эти аннотации, которые новичкам придется прописать? Есть ли смысл от такой статьи, где читатель пропишет все что вы ему указали, и ничего не поймёт. Новичков надо учить добираться до истины, держать ответ за каждую написанную строчку кода, а вы учите переписывать рабочий код, не особо вдаваясь в подробности.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
MVP и Dagger 2 – скелет Android-приложения – часть 2