Как стать автором
Обновить

Комментарии 8

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

еще и разбито будет на 40 частей
Например, прослушивание файла будет выглядеть примерно так:
button.setOnClickListener

что?
почему фильтрация отдельным пунктом, почему не любая другая extenstion-функция для коллекций из десятков имеющихся?
геттеры/сеттеры, дата классы, делегаты — это же просто базовый синтаксис котлина, а не какие-то пасхалки, скрытые в недрах
Для чего вы указываете @SerializedName(«name») если имя переменной и так name (как минимум в случае с Gson это излишне, или я что-то упускаю)?  Если из-за proguard, то проще уже было бы весь класс "@Keep" пометить.

@Keep это не только про обфускацию, но и про оптимизацию тоже. Например, геттеры могут быть удалены и заменены прямой работой с полем класса. Может в R8 еще каких-нибудь оптимизаций добавят (или уже добавили).

При будущем возможном рефакторинге может помочь.
К котлине очень делегаты радуют )
class PlanPolygon(): Refreshed, ObservableList by observableArrayList()
MaxRokatansky у вас плохой пример
data class User(
    @SerializedName("name") val name: String = "",
    @SerializedName("age") val age: Int = 0
)

В случае если с сервера не придет какое то поле, например name, то kotlin не подставит значение по умолчанию и получится нуловое поле, которое при обращении выдаст KotlinNullPointerException
p.s. это кстати распространенная ошибка, которая ломает NullSafety у kotlin'a и решается просто, вот несколько вариантов:
1) конвертацией из Network слоя в Domain, где будет проверка на requiredNotNull
2) все поля где есть SerializedName объявляются nullable (?)
3) добавить проверку полей на соответствие через средства kotlin — copy(), в этом случае kotlin выругается KotlinNullPointerException когда попытается обратиться к полю
Зарегистрируйтесь на Хабре, чтобы оставить комментарий