Навигация в Android с Kotlin. GDG Mobile Meetup Izhevsk, 20/02

Содержание

Слайд 2

Навигация в Android
с Kotlin

Упоров Дмитрий
Руководитель отдела мобильной разработки, ЦВТ

/

Навигация в Android с Kotlin Упоров Дмитрий Руководитель отдела мобильной разработки, ЦВТ /

Слайд 3

Master-details

Master-details

Слайд 4

Java - Junior way

Минусы:
Дублирование, многословность
Неочевиден контракт передачи данных

Java - Junior way Минусы: Дублирование, многословность Неочевиден контракт передачи данных

Слайд 5

Java - The way: Factory-method

Java - The way: Factory-method

Слайд 6

Плюсы:
Лаконичность вызова

start(this)???

Boilerplate code
Нагрузка статикой, нарушение SR

Минусы:
Неочевидность

Java - The way

Плюсы: Лаконичность вызова start(this)??? Boilerplate code Нагрузка статикой, нарушение SR Минусы: Неочевидность Java - The way

Слайд 7

Java -> Kotlin

Java -> Kotlin

Слайд 8

Java -> Kotlin

Java -> Kotlin

Слайд 9

̶Н̶̶̶е̶̶̶о̶̶̶ч̶̶̶е̶̶̶в̶̶̶и̶̶̶д̶̶̶н̶̶̶о̶̶̶с̶̶̶т̶̶̶ь̶
Boilerplate code
Нагрузка статикой, нарушение SR

Kotlin - a way

̶Н̶̶̶е̶̶̶о̶̶̶ч̶̶̶е̶̶̶в̶̶̶и̶̶̶д̶̶̶н̶̶̶о̶̶̶с̶̶̶т̶̶̶ь̶ Boilerplate code Нагрузка статикой, нарушение SR Kotlin - a way

Слайд 10

Boilerplate code
̶Н̶а̶г̶р̶у̶з̶к̶а̶ ̶с̶т̶а̶т̶и̶к̶о̶й̶,̶ ̶н̶а̶р̶у̶ш̶е̶н̶и̶е̶ ̶S̶R̶

Kotlin - better way

Boilerplate code ̶Н̶а̶г̶р̶у̶з̶к̶а̶ ̶с̶т̶а̶т̶и̶к̶о̶й̶,̶ ̶н̶а̶р̶у̶ш̶е̶н̶и̶е̶ ̶S̶R̶ Kotlin - better way

Слайд 11

Kotlin - better way

Kotlin - better way

Слайд 12

Kotlin - better way

Kotlin - better way

Слайд 13

Decompiled byte-code:

Kotlin - The best way

Decompiled byte-code: Kotlin - The best way

Слайд 14

Intent

delivery

EXTRAS

Intent delivery EXTRAS

Слайд 15

Parcelable

Parcelable

Слайд 16

Model wrapping - pervy’ blin komom

Обертка над каждой моделью:

Плюсы:
Инкапсуляция
Читабельность

Минусы:
Boilerplate
Несколько объектов одного типа

Model wrapping - pervy’ blin komom Обертка над каждой моделью: Плюсы: Инкапсуляция

Слайд 17

Плюсы:
Единая точка обработки
Расширяемость (ха-ха)

Минусы:
Необходимость расширения
RuntimeException
Неоформляемо

Model wrapping - pervy’ blin komom

Плюсы: Единая точка обработки Расширяемость (ха-ха) Минусы: Необходимость расширения RuntimeException Неоформляемо Model

Слайд 20

КОДОГЕНЕРАЦИЯ!!1! >:D

КОДОГЕНЕРАЦИЯ!!1! >:D

Слайд 22

Model wrapping - Wrong way

Model wrapping - Wrong way

Слайд 23

Annotation processor

Annotation processor

Слайд 24

Model wrapping - Wrong way

Model wrapping - Wrong way

Слайд 25

Java Mirror API

Java Mirror API

Слайд 26

Нет информации о реализованных интерфейсах

Нет ограничения реализации “Или то, или другое”
Нет гарантии,

Нет информации о реализованных интерфейсах Нет ограничения реализации “Или то, или другое”
что пользователь подставит в аннотацию свой класс
Невозможно явно сказать пользователю, что мы хотим от него реализации интерфейса

APT == MirrorAPI != Reflection

Слайд 28

“Используй дженерики..”

“Используй дженерики..”

Слайд 29

RuntimeException

Kotlin - Wrapped model getting

RuntimeException Kotlin - Wrapped model getting

Слайд 30

No way, but...

There is way to avoid RuntimeException?

No way, but... There is way to avoid RuntimeException?

Слайд 31

Input

Any?

Serializable

Parcelable

Input Any? Serializable Parcelable

Слайд 32

Model wrapping - Kotlin better way

Model wrapping - Kotlin better way

Слайд 33

How to filter Serializable or Parcelable?

Перегрузка метода == ограничение всех параметров одним

How to filter Serializable or Parcelable? Перегрузка метода == ограничение всех параметров
интерфейсом
Ограничения реализации “Или то, или другое” (невозможно)
2 массива: Serializable и Parcelable. Ограниченный порядок аргументов

Слайд 34

Model wrapping - Kotlin the best way

Model wrapping - Kotlin the best way

Слайд 35

Model wrapping - Kotlin the best way

Model wrapping - Kotlin the best way

Слайд 36

Improvements time

Improvements time

Слайд 37

Improvements time

Improvements time

Слайд 38

Improvements time

Improvements time

Слайд 39

Improvements time

Improvements time

Слайд 40

Kotlin magic time

Kotlin magic time

Слайд 41

Improvements time

Improvements time

Слайд 43

Improvements time 2

Improvements time 2

Слайд 44

Improvements time 2

Improvements time 2

Слайд 45

Success 2!

Success 2!

Слайд 46

Improvements time 3 - ArgumentWithKey

Improvements time 3 - ArgumentWithKey

Слайд 47

Improvements time 4: Intent.() -> Unit

Improvements time 4: Intent.() -> Unit

Слайд 48

Improvements time 5: Other components

Fragment way:

Service way:

to be continued..

Improvements time 5: Other components Fragment way: Service way: to be continued..
Имя файла: Навигация-в-Android-с-Kotlin.-GDG-Mobile-Meetup-Izhevsk,-20/02.pptx
Количество просмотров: 23
Количество скачиваний: 0