TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

Намерени 105 подобни публикации

Търсене: #compose

当前筛选 #compose清除筛选
Android Broadcast

@android_broadcast · Post #9948 · 06.04.2026 г., 18:22

HotSwan - быстрое обновление Composable на реальном устройстве. Доступно как плагин для Android Studio Я выбрал другой путь - делаю СMP проект с поддержкой Android + Desktop JVM и так можно быстро проверять + делать код чище. #Compose

Hashtags

Android Broadcast

@android_broadcast · Post #9517 · 19.09.2025 г., 06:02

⚙️ Нашел сайт с демонстрацией того как происходит рекомпозиция с примером хороших и плохих практик Как была сделана реализация написали в статье, а исходники есть на GitHub #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9229 · 03.06.2025 г., 11:37

Серия статей с разборами лучших практик для Jetpack Compose: 1️⃣5 Core Optimizations Every Developer Should Know (EN, 5м, альт. ссылка) 2️⃣5 Advanced Techniques for Ultra-Smooth Apps (EN, 8м, альт. ссылка) 3️⃣The Expert’s Toolkit (EN, 8м, альт. ссылка) 4️⃣Runtime Mastery & Fine-Tuning (EN, 8м, альт. ссылка) #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9138 · 16.05.2025 г., 03:43

⚙️ Нужно ли проставлять аннотации @Stable и @Immutable сразу при написании кода? 🤔 Мой ответ — НЕТ! Не стоит заниматься преждевременной оптимизацией. Пишите UI без оглядки на аннотации стабильности, а затем используйте инструменты анализа, чтобы определить, где действительно возникают лишние рекомпозиции и есть смысл оптимизировать типы. Как анализировать рекомпозиции и пропуски? 👉 Используйте Layout Inspector в Android Studio (подробнее — в этом посте) 👉 Включайте отслеживание работы composable-функций в System Trace 👉 Можно воспользоваться библиотекой Compose Investigator, чтобы получать детальные логи по рекомпозициям ‼️Важный нюанс: Если вы используете типы из внешних библиотек или из модулей, где не подключён Compose Compiler, такие типы всегда считаются Unstable. Это может приводить к лишним рекомпозициям. 🚀Strong Skipping Mode действительно упростил жизнь разработчикам, но старайтесь передавать в параметры Сomposable-функций только Stable или Immutable типы. Это позволит максимально эффективно использовать skipping и сделать UI более производительным. #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9129 · 14.05.2025 г., 15:44

Вышел Coil 3.2.0 Что нового ⬆️ Обновление Kotlin, Compose, Okio, Skiko, Coroutines и др зависимостей до актуальных версий 🛠 Исправление багов 👉 Compose артефакты требуют Java 11 и выше из-за перехода на Compose 1.8.0 #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9720 · 04.12.2025 г., 07:35

⚙️Вышел Jetpack Compose 1.10.0 👉 Стабильное API Shared Transition 👉 Оптимизированный скролл 👉 Новые подходы к сохранению данных при пересоздании Activity через ViewModel 🚀 Повышена производительность UI на Compose 🛠 Исправлено багов и шероховатостей Изменений действительно много — в один пост всё не поместить. Буду разбирать ключевые обновления по отдельности в следующих публикациях на @compose_broadcast✨ #compose#android

Android Broadcast

@android_broadcast · Post #9430 · 20.08.2025 г., 12:55

🤖 Как использовать Compose, чтобы сделать анимированный Splash Screen Разработчик создал библиотеку androidx-splashscreen-compose (не от Google решение), которая позволяет делать красивую анимацию как на анимашке. Подробный разбор и реализация есть в статье (EN,6м, альт. ссылка) или 🐱исходниках на GitHub #android#compose

Android Broadcast

@android_broadcast · Post #9412 · 14.08.2025 г., 07:17

⚙️Вышел Jetpack Compose 1.9 Stable (августа 2025) Главные новинки: 👉 Тени нового поколения — dropShadow() и innerShadow() дают больше контроля, чем классический shadow(). 👉 LazyLayout — новый API предзагрузки и кэширования элементов для более плавного скролла. 👉 2D-прокрутка — Scrollable2D для таблиц, карт и больших изображений. 👉 Расширенный stack trace — имена composable и их позиции для отладки в stacktrace (только в debug). 👉 Новые аннотации — @RememberInComposition, @FrequentlyChangingValue и перенос @Stable в отдельный модуль. Подробнее буду рассказывать в @compose_broadcast. Подписывайтесь! #compose#android

Android Broadcast

@android_broadcast · Post #9233 · 05.06.2025 г., 08:54

📹Mastering text input in Compose (EN, 18м) Google выпустили шикарное видео, где показали лучшие практики работы с текстовыми полями в Compose — с примерами, API и лайфхаками. В ролике разработчики на примере рассказывают: 👉 как использовать state-based TextField — новый подход к управлению вводом; 👉 зачем нужен SecureTextField и как задать требования к паролю; 👉 как работает Autofill API (да, теперь можно сохранять логины и OTP); 👉 как кастомизировать поле ввода OTP с помощью BasicTextField и decorator; 👉 как принимать GIF и изображения через drag & drop с новым contentReceiver; 👉 как использовать input/output трансформации для автоподстановки скобок и тире в номерах; #android#compose

Android Broadcast

@android_broadcast · Post #9003 · 24.04.2025 г., 09:06

⚙️ Вышел Jetpack Compose 1.8.0 Все новинки расскажу отдельными постами в @compose_broadcast, а именно: 👉 Autofill 👉 ресайзинг текста под контейне 👉 новое API для отслеживания Composable на экране 👉 анминирование границ Composable 👉 стабилизация API (убрали экспериментальные аннотации) 👉 ContextualFlowRow и ContextualFlowColumn теперь deprecated, им на замену используйте FlowRow и FlowColumn 👉 диалоги теперь учитывают режим экрана edge-to-edge 👉 упростили тестирование ClickableText 👉 появилась возможность кастомизации overscroll Свежий BOM для новых версий implementation(platform("androidx.compose:compose-bom:2025.04.01")) #compose#android

Android Broadcast

@android_broadcast · Post #8883 · 30.03.2025 г., 15:30

⚙️Как работать с Custom Layout в Jetpack Compose (21м) В этой статье вы найдете: 👉 как работают layout-ы в Compose; 👉 изменение layout-а отдельного компонента; 👉 создание кастомных Layout и LazyLayout; 👉 отложенную композицию. Всё это на примерах, в том числе из дизайн-системы Авито. #compose#android

123•••89
ПредишнаСтр. 1 от 9Следваща