Основной сценарий использования Kotlin Multiplatform – это выделение какого-то компонента бизнес-логики в общий модуль, который затем шарится между платформами. С таким подходом хорошее тестовое покрытие становится важным вдвойне. Держите очень подробный гайд по тому, как подойти к тестированию мультиплатформенного модуля – разбираются и юнит-тесты, и контракты.
https://akjaw.com/testing-on-kotlin-multiplatform-and-strategy-to-speed-up-development/
https://akjaw.com/testing-on-kotlin-multiplatform-and-strategy-to-speed-up-development/
AKJAW
Testing on Kotlin Multiplatform and a Strategy to Speed Up Development Time (2023 Update)
Automated tests are an integral part of developing software, they help catch bugs before they reach the users and save developers time by cutting down manual testing.
Если вам когда-нибудь нужно будет реализовывать полнотекстовый поиск – посмотрите на новую библиотеку lucilla.
https://github.com/haroldadmin/lucilla
https://github.com/haroldadmin/lucilla
GitHub
GitHub - haroldadmin/lucilla: Fast, efficient, in-memory Full Text Search for Kotlin
Fast, efficient, in-memory Full Text Search for Kotlin - GitHub - haroldadmin/lucilla: Fast, efficient, in-memory Full Text Search for Kotlin
Чистый код – это очень расплывчатое понятие (как и архитектура, кек). В каком бы контексте оно не использовалось, полезно пытаться выделить конкретные качества кода, о которых идет речь: читаемость, переиспользуемость, консистентность, тестируемость. Посмотрите на неплохую статью с критикой термина и пополните свой словарик для комментариев на code review.
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
➡️ Делаем оффер iOS- и Android-разработчикам за один день. Приглашаем в команды Мобильного банка, Тинькофф Инвестиций, Тинькофф Бизнеса и еще трех проектов.
Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.
🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/offer-mobile
Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.
🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/offer-mobile
Есть бесконечность подходов к тому, как организовать навигацию в Compose проекте. В статье рассматривается большая часть из них, в заодно и систематизируется в виде списка критериев выбора подходящего решения.
https://commonsware.com/blog/2022/01/22/navigating-compose-criteria.html
https://commonsware.com/blog/2022/01/22/navigating-compose-criteria.html
CommonsWare: Android App Development Books
Navigating in Compose: Criteria
There are lots of solutions for navigating between
В следующий четверг, 10 февраля, ребята из VK проводят Android митап с темами про работу с GraphQL, реверс-инжиниринг мобильных приложений с помощью Frida и интеграцией общего SDK сразу во много приложений.
Регистрация с доступом к чату и викторине – здесь, а трансляции можно дожидаться вот тут.
Регистрация с доступом к чату и викторине – здесь, а трансляции можно дожидаться вот тут.
vk.company
VK / VK Tech Talks · Android
10 февраля в 18:00 приходите на митап от команды VK. В этот раз поговорим про разработку на Android.
А вдогонку – разбор одного из подходов, с навигацией через стейт ViewModel.
https://medium.com/@ffvanderlaan/navigation-in-jetpack-compose-using-viewmodel-state-3b2517c24dde
https://medium.com/@ffvanderlaan/navigation-in-jetpack-compose-using-viewmodel-state-3b2517c24dde
Medium
Navigation in Jetpack Compose using ViewModel state
In this article, we will show an example of using a ViewModel to initiate navigation in Jetpack Compose. For this, we use navigation state…
В последних версиях Android довольно сильно изменилось поведение диплинков. По ссылке – обзор этих измений и план по тому, как адаптировать к ним ваш проект.
https://doordash.engineering/2022/01/25/your-deep-links-might-be-broken-web-intents-and-android-12/
https://doordash.engineering/2022/01/25/your-deep-links-might-be-broken-web-intents-and-android-12/
DoorDash
Your Deep Links Might Be Broken: Web Intents and Android 12
Get ahead of the behavior changes in the latest Android 12 update by fixing deep links with web intents in this guide
Пошаговый гайд по реализации автоматического импакт-анализа для тестов. Это техника, которая позволяет запускать только те тесты, которые тестируют затронутый изменением код. Авторы говорят, что в их случае экономится около 30% времени прогона.
https://habr.com/ru/company/citymobil/blog/647519/
https://habr.com/ru/company/citymobil/blog/647519/
Хабр
Импакт-анализ на примере Android-проекта
Одной из самых дорогих по времени операций на CI-сервере является прогон автотестов. Есть множество способов их ускорения, например, распараллеливание выполнения по нескольким CI-агентам и/или...
Если бы я вручал награды за лучшие посты прошлого месяца, то точно отдал бы этому. Одна из самых подробных статей про перфоманс Android приложений:
- почему он важен и как влияет на пользовательский опыт
- из-за каких особенностей JVM возникают часто встречающиеся проблемы
- каким тулингом можно пользоваться, чтобы мониторить перфоманс и находить проблемы
- какие языковые фичи Kotlin помогают улучшить перфоманс
Последняя часть про языковые фичи – очень хорошая, и подкинет вам идей по тому, на что еще обращать внимание на code review.
https://magdamiu.medium.com/high-performance-with-idiomatic-kotlin-d52e099d0df0
- почему он важен и как влияет на пользовательский опыт
- из-за каких особенностей JVM возникают часто встречающиеся проблемы
- каким тулингом можно пользоваться, чтобы мониторить перфоманс и находить проблемы
- какие языковые фичи Kotlin помогают улучшить перфоманс
Последняя часть про языковые фичи – очень хорошая, и подкинет вам идей по тому, на что еще обращать внимание на code review.
https://magdamiu.medium.com/high-performance-with-idiomatic-kotlin-d52e099d0df0
Medium
High performance with idiomatic Kotlin
Nothing is more likely to drive users away than a poorly performing app. So this is why we, as developers, should focus on performance.
Довольно проклятая фича Android Studio, которая, может быть, кого-то из вас порадует. Можно настроить интеграцию с Jira, получить доступ ко всем вашим задачам и быстро создавать новые ветки для них.
https://twitter.com/mateuszbrat/status/1489164332961308673?s=21
https://twitter.com/mateuszbrat/status/1489164332961308673?s=21
Twitter
Mateusz Bratkowski
Yesterday I learned that you can connect your Android Studio to your Jira board and have access to all tasks which are assigned to you. This is so useful - you can create branches corresponding to your tasks directly from your IDE, without context switching.
Неплохой доклад на вечную тему – как различные ошибки разработчиков, принятые на ранней стадии развития проекта, могут очень сильно усложнить работу с ним в будущем, или даже послужить причиной полного его переписывания.
https://youtube.com/watch?v=nD1BvJYWcSc
https://youtube.com/watch?v=nD1BvJYWcSc
YouTube
Guide to Destroying Codebases the Demise of Clever Code with Gabor Varadi
We try to write the best code possible, simplify future maintenance, optimize for code reuse, and apply best practices and principles to help us achieve this.
However, what if this can serve as a double-edged sword?
In this talk, we'll analyze different…
However, what if this can serve as a double-edged sword?
In this talk, we'll analyze different…
Вышла превью версия Kotlin 1.6.20. Самые интересные фичи в релизе:
💻Контекстные ресиверы
🏎Ускорение компиляции JVM проектов на 15% с помощью параллельной компиляции файлов в рамках одного модуля
https://blog.jetbrains.com/kotlin/2022/02/kotlin-1-6-20-m1-released/
💻Контекстные ресиверы
🏎Ускорение компиляции JVM проектов на 15% с помощью параллельной компиляции файлов в рамках одного модуля
https://blog.jetbrains.com/kotlin/2022/02/kotlin-1-6-20-m1-released/
The JetBrains Blog
Preview of Kotlin 1.6.20 With Prototype of Context Receivers, Parallel Compilation on JVM, Incremental Compilation in JS, and More…
The first preview of the 1.6.20 release is out! Introducing Kotlin 1.6.20-M1! This preview includes: Defining context-dependent declarations in Kotlin/JVM with the prototype of context receivers.Fa
Духоподъемная история про то, что при желании в Android-разработку можно ворваться и после 40 лет. От других историй входа в IT эту отличает несколько особенностей:
- Довольно печальная сюжетная ветка про то, что С++ разработчик совсем перестал программировать после перехода в менеджмент, и спустя десяток лет вообще все скиллы растерял
- Сюжетный твист с перемоткой времени в конце
Мораль? Да нет морали, кроме того, что не стоит совсем забрасывать программирование, даже когда карьера вот прямо сейчас летит куда-то вверх.
https://elye-project.medium.com/i-started-android-development-at-40-6591c1e8bc38
- Довольно печальная сюжетная ветка про то, что С++ разработчик совсем перестал программировать после перехода в менеджмент, и спустя десяток лет вообще все скиллы растерял
- Сюжетный твист с перемоткой времени в конце
Мораль? Да нет морали, кроме того, что не стоит совсем забрасывать программирование, даже когда карьера вот прямо сейчас летит куда-то вверх.
https://elye-project.medium.com/i-started-android-development-at-40-6591c1e8bc38
Medium
I Started Android Development At 40
It’s not too late to restart your software development career at 40
Недавно ребята из IDEA Plugin Marketplace проводили опрос про самые любимые пользователями плагины. Ловите топовые из них:
Nyan Progress Bar – просто лучший прогресс бар из возможных, чтобы вы не грустили из-за долгого обновления индексов
Rainbow Brackets – разноцветная подсветка открывающих и закрывающих скобок, чтобы проще было находить их пары
GitHub Copilot – та самая нейроночка, которая подставляет бойлерплейтный код за вас
IdeaVim – для фанатов Vim или тех, кто хочет его изучить
Nyan Progress Bar – просто лучший прогресс бар из возможных, чтобы вы не грустили из-за долгого обновления индексов
Rainbow Brackets – разноцветная подсветка открывающих и закрывающих скобок, чтобы проще было находить их пары
GitHub Copilot – та самая нейроночка, которая подставляет бойлерплейтный код за вас
IdeaVim – для фанатов Vim или тех, кто хочет его изучить
JetBrains Marketplace
Nyan Progress Bar - IntelliJ IDEs Plugin | Marketplace
Pretty progress bars with nyan cat for IJ based IDEs.
Размышления по поводу того, всегда ли включение
https://publicobject.com/2022/02/02/compiler-warnings-are-good-actually/
-Werror
в проекте – хорошая идея, и в каких случаях это будет только мешать команде.https://publicobject.com/2022/02/02/compiler-warnings-are-good-actually/
Public Object
Compiler Warnings Are Good, Actually
Every so often an exasperated teammate recommends enabling -Werror in all our repos. The reasoning is sound: Compiler warnings are bad.Having lots of them is demoralizing.If we had prevented them from ever occurring we wouldn’t be in this mess.This is a particularly…
Вы используете -Werror в своих проектах?
Anonymous Poll
5%
Всегда включаю
2%
Только в пет-проектах
1%
Только в рабочих проектах
3%
В каких-то редких случаях
40%
Не включаю
50%
Посмотреть результаты
В каждом приложении есть много мелких багов, которые, скорее всего, никогда не будут исправлены. Максимум – их случайно поправят, когда будут делать новую фичу где-то на том же экране. Примеры таких недостатков: отсутствие пустого стейта для коллекции, моргание лэйаута при изменении стейта вместо хорошей анимации, отсутствие понятных сообщений об ошибке. Автор статьи топит за то, что находить и исправлять такие баги – ответственность разработчика, а не продакта или QA. И я с ним в целом согласен, потому что, если не мы, то кто.
https://matthewbischoff.com/software-paper-cuts/
https://matthewbischoff.com/software-paper-cuts/
mb bischoff
Software Paper Cuts
Running up against a paper cut bug feels a little bit like getting a physical one: not the end of the world, but certainly unpleasant. These types of tiny annoyances accrete over time, especially when no one is paying attention to them.
📱26 февраля компания Flo проведет онлайн hiring event для Android, iOS и Front-End Web инженеров.
Пройти собеседование, получить job offer и welcome-бонус в размере $5 000 можно всего за несколько часов.
Для участия приглашаются Senior (6+ лет опыта на схожей позиции), а также Middle+ Mobile инженеры.
Чтобы принять участие вам надо пройти регистрацию:
👉Android инженеры https://grnh.se/b4d3a0663us
👉iOS инженеры https://grnh.se/861e33bc3us
👉Web инженеры https://grnh.se/5caa722f3us
Пройти собеседование, получить job offer и welcome-бонус в размере $5 000 можно всего за несколько часов.
Для участия приглашаются Senior (6+ лет опыта на схожей позиции), а также Middle+ Mobile инженеры.
Чтобы принять участие вам надо пройти регистрацию:
👉Android инженеры https://grnh.se/b4d3a0663us
👉iOS инженеры https://grnh.se/861e33bc3us
👉Web инженеры https://grnh.se/5caa722f3us
boards.greenhouse.io
Flo Health
Вышел компиляторный плагин Arrow Analysis, который добавляет кучу дополнительных проверок для вашего кода на этапе компиляции. Если попробуете, расскажите в обсуждениях, как использование плагина влияет на скорость компиляции – подозреваю, что не очень хорошо.
https://www.47deg.com/blog/arrow-analysis-kotlin-compiler-plugin/
https://www.47deg.com/blog/arrow-analysis-kotlin-compiler-plugin/
47 Degrees
Announcing Arrow Analysis - a Kotlin compiler plug-in | 47 Degrees
Arrow Analysis is a Kotlin compiler plug-in that supercharges your compilation plugin with new checks to make your code safer and more robust.