Как избежать хаоса: навигация в качестве отдельного логического уровня
Android Developer, Skyeng
Сергей Шардыко
ПОЭМЫ ДАРВИНА (3 ЭТАЖ)
Площадка:
15:20-16:00
Время:
Мобильная разработка
О себе:
Программированием увлекался еще со школы, закончил магистратуру по инженерии ПО и начал путь мобильного разработчика с локального AR стартапа в Екатеринбурге. С момента первого оффера и по сегодняшний день успел:

  • застать активную фазу перехода Java → Kotlin,

  • поучаствовать в переезде с RxJava на Kotlin Coroutines, когда эта мода только зарождалась,

  • поработать с нативной камерой, покрутить матрицы в OpenGL (никому не рекомендую), пописать шейдеры (которые в итоге выпилили из проекта из-за низкой производительности),

  • написать свой механизм распознавания AR маркеров на OpenCV,

  • написать и поддержать несколько приложений с нуля в рамках заказной разработки,

  • пощупать древний Java legacy,

  • затащить MVVM в пару продакшн проектов, когда эта мода только зарождалась,

  • подружиться с разработкой под онлайн-кассы (на самом деле, не так больно, как может показаться на первый взгляд),

  • доказать руководству команды, что Flutter может и умеет в кроссплатформу (конечно же, в зависимости от функционала планируемого проекта),

  • поработать в fintech проектах маркетплейсов и кредитования,

  • возненавидеть webView,

  • понять, что webView, на самом деле, надо правильно готовить,

  • поработать с Server-Driven UI,

  • немного побыть лидом Android-команды (я не хотел, так вышло),

  • самое важное – попасть к ребятам в крутую команду Skyeng, к самым истокам международного проекта LANG.
- В Android есть библиотеки для работы с навигацией, но часто они представляют собой базовый инструмент без строгих правил по его применению. Это зачастую приводит к распространению логики навигации за пределы ее ответственности, сращиванию с presentation уровнем, росту связности с другими компонентами. Возникает хаос, которого стоит избегать.

- В проекте LANG (один из международных продуктов Skyeng для изучения иностранных языков) мы взяли за основу популярный подход и доработали его. Наша структура позволяет максимально отделить навигацию от presentation-слоя, гибко использовать и масштабировать ее в рамках разных модулей.

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

Что обсудим:

- Построение навигации в LANG: особенности и подходы к реализации.

- Cicerone VS навигация LANG: ключевые отличия.

- Технические сложности и как мы с ними работаем.

- В каких случаях пригодится наш подход к навигации, а когда можно обойтись и без нее.
О чем поговорим: