Kotlin Multiplatform Broadcast
9.48K subscribers
834 photos
53 videos
1.13K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
Early Access Program for Qodana, a New Product That Brings the “Smarts” of JetBrains IDEs Into Your CI Pipeline

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

Проект состоит из 2 частей: ядро IDEA без GUI для использования на CI как линтера и интерактивный Web UI для отчётов.

Посмотреть примеры работы можно на qodana.beta.teamcity.com (логинтесь как гость) и в любом проекте открывает таб "Qodana".

Использовать Qodana можно через Docker образ, GitHub Action, плагин для TeamCIty или как облачный сервис.

После такого понадобятся ли нам Detekt, Ktlint и прочие анализаторы кода? Как минимум нужен локальный Gradle плагин ещё
#Kotlin1_5

New Language Features Preview in Kotlin 1.4.30

В Kotlin 1.5 появятся новые возможности, которые уже можно попробовать в 1.4.30:
👉 Стабилизация inline value классов
👉 Экспериментальная поддержка JVM records
👉 Эксперементальная поддержка sealed интерфейсов и другие улучшения sealed классов

Чтобы их попробовать вам надо указать у себя в проекте версию языка 1.5. Подробнее как это сделать здесь.
Свойства против методов

Одна из сложностей в написании кода в Kotlin заключается в том что не во всех случаях очевидно понять что лучше использовать: свойство или метод. Официальная документация дает следующие рекомендации по использованию свойств:
👉 если свойство не бросает исключение (exception)
👉 дёшево для вычисления (или можно закешировать при первом запуске)
👉 возвращает одно и то же значение при каждом вызове, если состояние объекта не изменилось

Авто статьи разбирается в этих понятиях подробнее и раскрывает что не всё так очевидно
Multik: Multidimensional Arrays in Kotlin

JetBrains представила первое превью библиотеки Multik, которая предназначена для работы с многомерными массивами
#IDEA

Празднование 20 лет IntelliJ IDEA

Популярнейшей IDE исполнилось 20 лет. В честь этого события нас ждет конференция, которая пройдет 25 и 26 февраля. Мы узнаем о возможностях продукта и его будущем.
#Flow

Backpressure in your Kotlin Flows

Разбор как работает backpressure в Kotlin Flow
#Coroutines

How We Test Concurrent Primitives in Kotlin Coroutines

Рассказ о библиотеки для тестирования concurrent структур данных - Lincheck
#Multiplatform #Mobile

Готовим Большую Фичу на Kotlin Multiplatform. Доклад Яндекса

Яндекс рассказывает о своем опыте интеграции фичи в мобильный карты Яндекса с переиспользованием коды между Android и iOS приложениями
Вышел Kotlin 1.4.31 с исправлениями ошибок версии 1.4.30
#Coroutines #Flow #Sequence

Use Sequence instead of Kotlin Flow when…

Flow - классный подход, но всегда ли нужно использовать его, а можно обойтись его синхронным подходом - Sequence? В статье автор разбирается когда вполне не нужны Coroutines
#Multiplatform #Mobile #HowTo

📺 Как создать Kotlin Multiplatform Mobile проект (28 мин)

Демонстрация создания Kotlin Mobile Multiplatform проекта в Android Studio при помощи KMM плагина. Добавляются необходимые зависимости и прочая базовая настройка.
#Coroutines

Вышла новая версия kotlinx.coroutines 1.4.3 в которой произошли минорные улучшения и исправление багов
Вышла первая превью следующей версии Kotlin - 1.5.0

Первая превью не отметилась множеством нововведений, но вот краткий список:
👉 Конкатенация строка с помощью invokedynamic для JVM target 9+
👉 Поддержка Java records
👉 JVM target 1.6 теперь Deprecated
👉 Поддержка suspend функций в функциональных интерфейсах
👉 Возможность объявлять protected конструкторы в sealed классах
👉 Немного улучшений в IDE
👉 Улучшение производительность
👉 Исправление багов
#Coroutines #Flow

My MutableStateFlow Didn’t Emit!

Успели столкнуться с ситуацией, когда MutableStateFlow ничего не эмитет? Это может происходить, потому что StateFlow предварительно проверяет на то что новое и старое значение отличаются с помощью equals
Влияние data-классов на вес приложения - это эксперимент в котором оценивается вес в байтах на размер приложения от одной из самых популярных фичей Kotlin - data class.

В статье автор уделил много внимания написанию плагина компилятора для автоматизации теста, но всетаки результат был показан. На тысячах классов результат распакованного DEX - около примерно 1.5 мегабайта ~ 4% размера приложения (таблицу смотрите в статье).

Теперь прежде чем писать ключевое слово data у класса, задумайтесь так ли вам нужен этот функционал вам.
Reaction — обработка результатов методов в Kotlin

Демонстрация способа передачи между результата выполнения операции между слоями архитектуры
#Flow #Coroutines

The Best Way to Collect a Flow in Kotlin – launchIn

Flow имеет несколько способов как запустить сбор данных из цепочки, но автор рекомендуется Flow.launchIn(CoroutineScope).
Вышел Detekt 1.16.0 в котором как всегда обновили Kotlin до последней версии, исправили баги и завели пару новых проверок.
Kotlin Best Practices

Богат своими возможностями язык Kotlin, что повышает случаи его использования, которые приведут к нечитаемому коду и возникновению ошибок из-за этого. В статье разбирают что стоит делать и нет:
Объявление класса в одну строчку
Вложенный return
Анонимный параметр it в лямбдах
Цепочки безопасных вызовов ?.
Использовать !!
Использование Util классов
Используйте замыкающие запятые, например после последнего параметра метода
SAM
Изучайте стандартную библиотеку
Согласуйте code style
Kotlin. Лямбда vs Ссылка на функцию - сравнение и показ наглядных примеров