Какие плюсы и минусы кодогенерации

«Какие плюсы и минусы кодогенерации» — вопрос из категории Gradle и сборка, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:

  • Уменьшает boilerplate код (например, Room, Dagger)
  • Повышает производительность (генерируется во время компиляции)
  • Снижает вероятность ошибок (код генерируется автоматически)

Минусы:

  • Усложняет дебаг (стектрейсы указывают на сгенерированный код)
  • Увеличивает время сборки (особенно при clean build)
  • Может быть "магией" для новичков (неочевидно, как работает)

Пример с Room:

@Dao
interface UserDao {  // Мы пишем только интерфейс
    @Query("SELECT * FROM users")
    fun getAll(): List<User>
}
// Реализация генерируется автоматически