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

Пользователь

Отправить сообщение

Рефакторинг функций расширения в Kotlin: использование объекта-компаньона

Время на прочтение7 мин
Количество просмотров7K

В Kotlin есть отличная возможность использовать функции расширения, позволяющие писать более выразительный и компактный код. Под капотом это просто статические методы, которые могут навредить кодовой базе при некорректном использовании. В этой статье я расскажу, как работать с функциями расширения, которые со временем из небольших добавлений к коду трансформировались в монстров, содержащих бизнес-логику.

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии4

Влияние Kotlin data-классов на вес приложения

Время на прочтение7 мин
Количество просмотров11K


Kotlin имеет много классных особенностей: null safety, smart casts, интерполяция строк и другие. Но одной из самых любимых разработчиками, по моим наблюдениям, являются data-классы. Настолько любимой, что их часто используют даже там, где никакой функциональности data-класса не требуется.


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

Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии5

Композитная сборка как альтернатива buildSrc в Gradle

Время на прочтение12 мин
Количество просмотров13K


В Gradle — системе автоматической сборки — подход с buildSrc уже успел стать стандартом для реализации собственных плагинов и задач, а также создания общих конфигураций, например списков зависимостей и версий. Но у него есть существенный недостаток: при изменении buildSrc кеш сборки становится недействительным.


При этом Gradle предоставляет альтернативный подход — композитные сборки, лишённые этого недостатка. В этой статье я расскажу, как использовать композитную сборку вместо buildSrc и с какими сложностями можно столкнуться при миграции.

Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии7

Dynamic Delivery в многомодульных проектах (часть 2)

Время на прочтение11 мин
Количество просмотров5.9K


Привет! Меня зовут Юрий Влад, я Android-разработчик в компании Badoo и занимаюсь внедрением Dynamic Features в наши проекты.


Я уже рассказывал, что такое Dynamic Delivery и какой у него API. В этой статье я подробнее опишу, как я использовал Dynamic Delivery в нашем приложении и почему интеграция оказалась такой лёгкой. В результате мне удалось уменьшить вес приложения на полмегабайта для 99% наших пользователей, превратив доступную для жителей определённого региона функцию в загружаемый модуль.

Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии0

Dynamic Delivery в многомодульных проектах (часть 1)

Время на прочтение9 мин
Количество просмотров8.3K


Привет! Меня зовут Юрий Влад, я Android-разработчик в компании Badoo и занимаюсь внедрением Dynamic Features в наши проекты.


Dynamic Delivery — технология, позволяющая устанавливать и удалять части приложения прямо во время работы для того, чтобы уменьшить место, занимаемое приложением. Если какие-то функции не используются, то зачем пользователю иметь их на устройстве?


В первой части статьи я подробнее расскажу о Dynamic Delivery и его API: как загружать и удалять модули. Во второй части — разберу на примере, как я использовал Dynamic Delivery в нашем приложении и получил экономию на размере приложения в полмегабайта.

Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии6

Бинарная совместимость Reaktive: как мы её обеспечиваем

Время на прочтение10 мин
Количество просмотров3.4K

Привет! Меня зовут Юрий Влад, я Android-разработчик в компании Badoo и принимаю участие в создании библиотеки Reaktive — Reactive Extensions на чистом Kotlin.


Любая библиотека должна по возможности соблюдать бинарную совместимость. Если разные версии библиотеки в зависимостях несовместимы, то результатом будут краши в рантайме. С такой проблемой мы можем столкнуться, например, при добавлении поддержки Reaktive в MVICore.



В этой статье я вкратце расскажу, что такое бинарная совместимость и каковы её особенности для Kotlin, а также о том, как её поддерживают в JetBrains, а теперь и в Badoo.

Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии0

Continuous delivery для вашей Kotlin Multiplatform библиотеки

Время на прочтение12 мин
Количество просмотров3.6K

Logo


Привет! Меня зовут Юрий Влад, я Android-разработчик в компании Badoo и принимаю участие в создании библиотеки Reaktive — Reactive Extensions на чистом Kotlin.


В процессе работы мы столкнулись с тем, что в случае с Kotlin Multiplatform continuous integration и continuous delivery требуют дополнительной настройки. Необходимо иметь в распоряжении несколько виртуальных машин на различных операционных системах, чтобы собрать библиотеку полностью. В этой статье я покажу, как настроить continuous delivery для вашей Kotlin Multiplatform библиотеки.

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность