TGViewer
Next Level Dev Next Level Dev @andrdevnotes · 619 subscribers
Post #152 719
Lateinit vs by lazy

В чём разница инициализации переменных с помощью lateinit и by lazy?

by lazy гарантирует тебе, что твоя переменная инициализируется только при первом запросе к ней, а при остальных запросах отдаст тот же инстанс.

Таким образом, ты будешь инициализировать каждую переменную, только когда она реально понадобится.

Иначе, когда при создании класса ты полезешь инициализировать сразу все 10 тяжёлых переменных в UI-потоке, у пользователя всё будет тормозить. А нам этого не хочется.

lateinit тебе ничего не гарантирует, lateinit - это просто "компилятор отвали, сам разберусь"

lateinit при попытке обращения к переменной, которую ты не инициализировал, свалится с экспешном.

А by lazy под капотом получит эксепшн и сам сходит в ту лямбду, которую ты ему передал для получения инстанса, и этот же инстанс потом и будет использовать при повторных обращениях.

Поэтому лейтиниты используются чаще всего для инжектов DI или для вьюбайндинга. Но во втором случае все равно может быть опасно, андроид – штука не всегда предсказуемая. Захочет кильнуть тебе процесс, или doze mode какой-нибудь настанет, что-то убьётся и криво попытается пересоздасться системой, жизненный цикл пойдёт по кривому пути и привет крэш =)

А вот by lazy использовать – это на здоровье. Только сильно тоже не увлекайтесь, а то читаемость кода может стать слишком плохой, и появиться неявные зависимости при инициализации разных переменных.

Может, знаете ещё минусы поздних и отложенных инициализаций?
  • 👍 8
  • 🔥 5
  • ❤ 2
  • 😍 1
  • 💯 1
More from @andrdevnotes
  1. Aug 9, 2026Почему ИИ так заходит российскому бизнесу? Во-первых – бум ИИ сейчас, конечно, не только в…
  2. Jul 10, 2026Post #201
  3. Jul 10, 2026Илья Аристотель на связи. Всегда можно найти 1001 причину для "не получится" и аргументиро…
  4. Jul 8, 2026Агентик раг: спасёт ли эта соломинка? 💪 Итак, агентик раг. В чём его сила? Ты даёшь ему з…
  5. Jul 1, 2026Не повторяйте мои ошибки с RAG Если вы вдруг подумали, что я тут вам академические тексты…
  6. Jun 18, 2026Как заставить ллм отвечать по методичке? Есть много ситуаций, когда вы хотите, чтобы ллм о…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →