Реализованы выбор маршрута(откуда и куда лететь) и анимация полета по кривой
Использовал ViewModel, RxJava, Koin, Unit tests
реализовал MVI (Model View Intent) и покрыл Unit Tests (там, где есть логика, которую нужно протестировать). Мне нравится MVI за unidirectional data flow и за то, что стейт экрана - это цельная модель. источник правды всегда один - ViewModel. У нас есть входной поток событий UI и мы его преобразовать в изменение стейта экрана. Из плюсов:
- легко писать в TDD подходе.
- легко дебажить, мы всегда знаем, после какого стейта и события произошла ошибка, при каких параметрах и сможем легко воспроизвести.
Навигация организована по фичам. RouteFlowCoordinator - отвечает за навигацию фичи “Маршрут”. Координатор знает, куда нужно идти с какого экрана. Детали навигации скрыты в классе Navigator.
Для внедрения зависимости использовал koin - идеально подходит для небольших и средних проектов на Kotlin. Из минусов: нужно каждую зависимость прописывать в Koin модуле, при большом проекте сильно раздуваются файлы модулей Koin.
По моему мнению Dagger в этом проекте занял бы намного больше время на сетап и не дал бы никаких преимуществ.
Для удобства тестирования можно использовать Easter Egg ;-) При долгом нажатии в правом нижнем углу экрана показывается список захардкоженых маршрутов.