Connect with us

Видео и подкасты для разработчиков

Разбор кода приложения по доставке пиццы

Опубликовано

/

     
     

Кирилл Розов разбирает код приложения по доставке пиццы.

  • 0:00 Обратный отсчёт
  • 0:23 Начало
  • 0:50 Знакомство с автором и проектом
  • 3:55 Обратная связь
  • 6:16 Проекта не собрался после git clone
  • 8:35 Важность README
  • 9:45 Исследуем структуру проекта и зависимости
  • 10:40 Какие карты лучше выбрать
  • 11:55 Application и ленивая инициация
  • 12:50 DI, чем заменить lateinit,
  • 15:30 DI, как заменить provide Context
  • 17:48 AndroidMenifest
  • 18:08 App Links
  • 20:13 Merged манифест
  • 21:27 Main Activity
  • 22:26 Хранение Dagger компонентов
  • 23:48 DI, internal на непубличные объекты
  • 24:15 Library mode компилятора
  • 25:20 DI, перенос @Inject в конструктор класса и использование @Binds
  • 27:15 DI, про @Inject аннотацию, добавление в проект
  • 32:37 Jetpack Splash Screen
  • 33:05 MainViewModel: инициализация UseCases, init функции
  • 34:10 MainViewModel: про tryEmit, без emit с StateFlow, а обновлять value
  • 35:17 Имхо лучше через state.update, потокобезопасно
  • 35:57 Про нейминг, про инициализацию на сплэш экране
  • 37:00 AppResult и корутины
  • 37:40 try catch и Cancellation и Runtime исключения
  • 39:50 Про Result класс,диспатчер по умолчанию
  • 40:30 Ответственность функции за свой Dispatcher
  • 42:00 Разбор репозитория, про хэндлеры
  • 43:05 Про сохранение оригинальных исключений
  • 44:10 Кто должен указаывать CoroutineDispatcher
  • 46:25 Разбор темы приложения
  • 47:40 Настройка темы в Activity
  • 50:10 AppScreen: Минимальный Scaffold, RTL, снова про компонент DI
  • 53:00 Про связанность фичей, интерфейсы для них
  • 56:10 Про слабосвязанную навигацию и текущую реализацию
  • 57:35 Про многомодульность
  • 58:48 Как создать Kotlin модуль с Android классами/зависимостями
  • 1:00:30 Про устаревший buildSrc
  • 1:02:00 Фича-модуль Home: как изменить дефолтный язык, оптимизация картинок
  • 1:05:17 Как Android масштабирует drawable ресурсы
  • 1:06:50 hiltViewModel()
  • 1:07:37 Навигация из VM в UI, one-time event и интерфейс навигатора
  • 1:09:48 Jetpack Compose: Про нейминг аргументов
  • 1:10:45 Jetpack Compose Preview
  • 1:12:42 HomeViewModel: прогрев в init, вынос в репозиторий функционала
  • 1:15:00 Про кэширование с бекендом и обдумывания логики
  • 1:17:35 Лучше не забывать обработку ошибок
  • 1:18:55 Про консистентность кода в контексте DI
  • 1:20:20 Именование аргумментов
  • 1:21:00 Небольшая оптимизация
  • 1:21:40 Переход к domain data модулям
  • 1:22:25 Про ключ по умолчанию для inject ViewModel
  • 1:23:16 Про разбиение на модули по смыслу (ресурсы, shared composables)
  • 1:26:00 Консистентность, положили интерфейс и impl рядом
  • 1:26:30 Про instance интерфейса и как это сделали с List в Kotlin
  • 1:27:20 Минусы хранения UseCases в одном месте
  • 1:28:18 Про консистентность suspend обработки данных
  • 1:29:01 Как удобно инжектить Dispatchers
  • 1:30:01 BaseUrl и inline class
  • 1:31:25 Консистентность дефолтных параметров в Retrofit интерфейсе
  • 1:32:32 Интерфейс и impl в один файл, не забывать везде использовать новые фичи
  • 1:33:50 Запуск самой suspend функцией нужного Dispatcher
  • 1:36:00 Про форматирование данных с бекенда
  • 1:37:45 Про приведение типов
  • 1:38:30 Про многомодульную организацию network api
  • 1:39:20 Финализирование кода, ответы на вопросы
  • 1:40:10 Вопрос на архитектуру, MVVM+ :)
  • 1:40:56 Про конвертацию картинок
  • 1:41:41 Замена execute() на invoke() в UseCase
  • 1:43:01 Про дефолтную локаль и когда пригодиться
  • 1:43:35 Почему следует всегда поддерживать английскую локаль
  • 1:44:28 Как оставить свой проект на разбор
  • 1:45:00 Пока-пока

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Хорошие новости

Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: