← Назад к вопросам

С какими библиотеками работаешь

1.0 Junior🔥 191 комментариев
#Опыт и софт-скиллы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

С какими библиотеками работаю

За 10+ лет разработки под Android я работал с широким спектром библиотек, которые можно условно разделить на несколько ключевых категорий. Моя философия — использовать проверенные, активно поддерживаемые библиотеки, которые решают конкретные задачи, а не добавляют complexity без необходимости. Я всегда оцениваю библиотеку по критериям: активность поддержки, размер сообщества, качество документации и влияние на размер APK.

1. Асинхронность и реактивное программирование

  • Kotlin Coroutines & Flow: Мой основной выбор для асинхронных операций. Они легковесны, отлично интегрированы в язык и упрощают работу с фоновыми задачами, отменами и конкурентностью.
    viewModelScope.launch {
        try {
            val data = repository.fetchData() // Suspend function
            _uiState.value = UiState.Success(data)
        } catch (e: Exception) {
            _uiState.value = UiState.Error(e.message)
        }
    }
    
  • RxJava (RxKotlin, RxAndroid): Имею глубокий опыт работы с RxJava 2/3 для сложных потоков данных и реактивных цепочек, хотя в новых проектах предпочитаю Coroutines Flow.

2. DI (Внедрение зависимостей)

  • Dagger Hilt: Стандарт для современных проектов. Аннотации @HiltAndroidApp, @AndroidEntryPoint и модули значительно упрощают настройку и поддержку DI по сравнению с "чистым" Dagger 2, которым я также владею.
    @HiltViewModel
    class MainViewModel @Inject constructor(
        private val userRepository: UserRepository
    ) : ViewModel() { ... }
    
  • Koin: Использовал для более легковесных проектов или там, где требовалась простая и понятная декларативная конфигурация.

3. Работа с сетью и сериализация

  • Retrofit + OkHttp: Неизменный стандарт для REST API. Настраиваю инстансы с интерсепторами для логирования, добавления заголовков, кеширования и обработки ошибок.
    interface ApiService {
        @GET("users/{id}")
        suspend fun getUser(@Path("id") userId: Long): UserDto
    }
    
  • Moshi / Kotlinx Serialization: Для сериализации/десериализации JSON. Moshi с адаптерами для Kotlin (moshi-kotlin) часто предпочитаю из-за гибкости, но kotlinx-serialization отлично подходит для мультиплатформенных (KMM) проектов.

4. Локальная база данных и кеширование

  • Room Persistence Library: Основная ORM для работы с SQLite. Использую @Entity, @Dao, @Database, миграции, Flow для наблюдения за изменениями данных.
  • DataStore: Для хранения простых ключ-значение или типизированных данных, полностью заменил SharedPreferences в новых проектах.
  • SQLDelight: Опыт использования в KMM-проектах для генерации типобезопасного Kotlin-кода из SQL-запросов.

5. Навигация

  • Jetpack Navigation Component: Для реализации навигации с графами, безопасными аргументами (Safe Args), глубокими ссылками и интеграцией с BottomNavigationView / DrawerLayout.

6. Загрузка и обработка изображений

  • Coil & Glide: Coil — мой фаворит для новых проектов на Kotlin. Он легкий, использует Coroutines и имеет отличный API. Glide — мощный инструмент с богатой функциональностью, который я использовал в legacy-проектах.
    // Coil
    imageView.load("https://example.com/image.jpg") {
        crossfade(true)
        placeholder(R.drawable.placeholder)
    }
    

7. Архитектурные компоненты и UI

  • Android Jetpack: Активно использую всю экосистему: ViewModel, LiveData (часто в паре с StateFlow), Lifecycle, ViewBinding/DataBinding.
  • Compose: Пишу UI на Jetpack Compose в новых проектах. Изучаю состояние (mutableStateOf), эффекты, навигацию через Compose и интеграцию с ViewModel.
    @Composable
    fun Greeting(name: String) {
        Text(text = "Hello $name!", modifier = Modifier.padding(16.dp))
    }
    

8. Тестирование

  • Unit-тесты: JUnit 4/5, MockK (или Mockito) для мокингa, kotlinx-coroutines-test для тестирования корутин.
  • UI-тесты: Espresso для View-системы, Compose UI Test (createAndroidComposeRule) для тестирования Compose-интерфейсов.

9. Утилиты и прочие

  • Timber для структурированного логирования.
  • LeakCanary для детекции утечек памяти.
  • Firebase (Crashlytics, Analytics, Cloud Messaging, Remote Config).
  • WorkManager для отложенных гарантированных фоновых задач.

Я постоянно слежу за трендами (например, рост популярности Ktor Client для сетевых запросов в KMM) и готов осваивать новые инструменты, если они предлагают существенные преимущества для проекта. Ключевой навык, по моему мнению, — не просто знать библиотеки, а понимать, как и когда их применять для создания стабильного, поддерживаемого и эффективного приложения.