Умные программисты пишут STUPID-код
Лозунг: Вы умны. А умные программисты пишут STUPID-код, потому что это умный способ писать код.
Я для себя сформулировал похожие оценки для кода:
👉 На сколько его просто прочитать коллеге на ревью,
👉 На сколько его просто покрыть тестами
👉 На сколько понятно куда внести изменения
Часто лучше оставить менее красивую, но более понятную конструкцию и это очень сложно для настоящего инженера-перфекционита
Лозунг: Вы умны. А умные программисты пишут STUPID-код, потому что это умный способ писать код.
Я для себя сформулировал похожие оценки для кода:
👉 На сколько его просто прочитать коллеге на ревью,
👉 На сколько его просто покрыть тестами
👉 На сколько понятно куда внести изменения
Часто лучше оставить менее красивую, но более понятную конструкцию и это очень сложно для настоящего инженера-перфекционита
Хабр
Умные программисты пишут STUPID-код
Умные программисты пишут STUPID-код, ведь они понимают, что неожиданно возникшая сложность может привести к провалу проекта. ▍ Страдание На момент написания этой статьи на моих часах 21:30. Этим утром...
👎1
Пятница - самое время рассмотреть очередной кросплатформенный движок. По-началу, когда я о нем услышал, мысленно закопал. Но потом понял что идея вполне жизнеспособна:
🔥 Полный натив для iOS, в отличии от большинства движков (Flutter, Compose Multiplatform). Look&Feel из коробки. SwiftUI на iOS и Compose на Andoid
🔥 Нет отдельного языка или новых концепций как с React Native или Xamarin
🔥 Нет проблем с ARC - код изначально пишется на Swift+SwiftUI
🔥 Исходники Kotlin, которые генерятся движком, могут быть не только просмотрены но и отредактированы
Не все так просто, даже если опустить вендорлок:
💩Поддержка языка ограничена, нужно думать какие конструкции можно использовать
💩Нативные компоненты прийдется писать свои или адаптировать сильно транспилированный код
💩В качестве БД прийдется использовать прямые обращения к sqlite
Почему я думаю, что это может взлететь?
💸Стартапы часто начинают с iOS-only приложения, которые пишут на самых актуальных инструментах, а это способ быстрее получить аналог на Android и проверить интерес
💸Проще найти разработчика который умеет писать нативный код для iOS и адаптирует его под Android
Можно поступить мудро, и посмотреть взлетит ли этот подход через пару лет, ведь если долго сидеть на берегу реки, то можно увидеть, как мимо проплывёт труп твоего врага 😀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎9
Subscript строк по индексу и ренжу
Мое самое большое непонимание в эволюции🖥 Swift - удаление substring при переходе с Swift 2.3 на Swift 3.0. Из-за некоторых граничных кейсов, которые сложно покрыть обычными индексами, мы потеряли удобство для всех кейсов. В результате чего, почти в каждом проекте есть расширение, позволяющее работать со строками через subscript. И пару раз я находил там баги или неожиданное поведение. На сколько я понимаю, все приседания с ради предсказуемой работы с emoji:
"\u{1F44D}" // 👍
"\u{1F44D}\u{1F3FD}" // 👍🏽
Если вы тоже работаете с обычными строками, забирайте мой gist
Мое самое большое непонимание в эволюции
"\u{1F44D}" // 👍
"\u{1F44D}\u{1F3FD}" // 👍🏽
Если вы тоже работаете с обычными строками, забирайте мой gist
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎1
Легковесный типобезопасный макрос для работы с сетью в Swift
SwiftRequest абстрагирует бойлерплейт, который обычно связан с настройкой HTTP-запросов в Swift. Он использует макросы, которые можно связать с конкретными объявлениями для улучшения и расширения их функциональности. Очень напоминает Retrofit на андроид
Макросы в Swift это новое дыхание для языка, главное чтобы это не превратилось в молоток, взяв в руки который все становится гвоздями. Как относитесь к подобным неявным упрощениям в коде? 👍/👎
SwiftRequest абстрагирует бойлерплейт, который обычно связан с настройкой HTTP-запросов в Swift. Он использует макросы, которые можно связать с конкретными объявлениями для улучшения и расширения их функциональности. Очень напоминает Retrofit на андроид
Макросы в Swift это новое дыхание для языка, главное чтобы это не превратилось в молоток, взяв в руки который все становится гвоздями. Как относитесь к подобным неявным упрощениям в коде? 👍/👎
👍22👎3
Если зайти в документацию URL конструктора с аргументом в виде строки, там появилась секция:
Понятно что важно, но что это значит на практике? На самом деле, все проще чем кажется! Новое значение по умолчанию заключается в том, что URL(string:) пытается закодировать недопустимые символы. Если мы хотим продолжать использовать поведение, существовавшее до iOS 17, нам нужно будет заменить
URL(string:)
на новый URL(string:encodingInvalidCharacters:)
и передать false
во второй аргумент. На примере все становится понятно 🙂Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎1
🌳Как сделать так, чтобы ваше приложение выглядело, будто вы наняли дизайнера (🇺🇸17 мин)
Хочу поделиться с вами находкой, которую вчера мне подарила предложка🌃 youtube. Это именно то, чего не хватает каждый раз, когда пытаешься сделать свой 🗑 пет проект
✔️ Как подобрать цвета и использовать их так, чтобы приложение выглядело консистентным
✔️ Как делать дизайн интуитивным
✔️ Как списывать как художник используя HIG
✔️ Как не перегружать интерфейс
✔️ Почему важно оставлять свободное место в интерфейсе
✔️ Секретная форма скруглений
И все это используя🖥 Xcode
Хочу поделиться с вами находкой, которую вчера мне подарила предложка
И все это используя
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25👎1
Apple прекратила поддержку метода «
traitCollectionDidChange
» в iOS 17, заменив его регистрацией на определенные изменения свойств «registerForTraitChanges
». В статье на примерах рассматривается как это теперь работаетPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎2
Forwarded from Android Broadcast (Кирилл Розов)
GitHub больше не основывается на Git, а начинает фокусироваться на Copliot технологиях (заявление тут). Это не значит что функционал с репами уйдёт, просто меняется приоритет компании, что уже можно было наблюдать весь год. GitHub Copilot Chat станет доступен всем в декабре 2023 и будет доступен на сайте и мобильных приложениях. Конечно подписку придется оформлять!
Что еще интересного в анонсе:
👉 Представили GitHub Copilot Enterprise - Copilot, который персонализируется под бизнес (39$ за пользователя в месяц)
👉 Безопасность GitHub тоже прокачали с AI (подробности тут)
👉 GitHub Copilot в рамках партнерской программы начнет интеграцию с другими сервисами для расширения знаний ассиcтента
#github #copilot #tooling
Что еще интересного в анонсе:
👉 Представили GitHub Copilot Enterprise - Copilot, который персонализируется под бизнес (39$ за пользователя в месяц)
👉 Безопасность GitHub тоже прокачали с AI (подробности тут)
👉 GitHub Copilot в рамках партнерской программы начнет интеграцию с другими сервисами для расширения знаний ассиcтента
#github #copilot #tooling
👎12👍5
Выходные - идеальное время для пет проекта. И если вы давно мечтали облегчить свою жизнь при помощи CLI утилиты, в блоге Swift появился туториал:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎3
Еще один доклад с Swift Connection 2023 которым захотелось поделиться после просмотра. Как сделать мобильное приложение доступным без интернета, если сеть ему нужна. Детально рассматриваются проблемы, с которыми сталкиваются разработчики подобных приложений и способы их решений.
👉 Отличие кеша от персистентного реляционного хранилища
👉 Сохранение консистентности состояния приложения
👉 Способы мержить конфликты незаметно для пользователя
👉 CRDT - Бесконфликтные реплицированные типы данных
Очень хорошо разложил по полочкам как сложно сделать работающее в фоне приложение и почему вам это скорее всего не нужно, с чем я абсолютно согласен 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎1
Очень полезное нововведение в Xcode 15.1, позволяющее удобно отловить лишнее место перерисовки SwiftUI View. Статья показалась мне на столько полезной, что сделал перевод. Уделите 6 минут, будет полезно!
👉 Что такое обновляемый SwiftUI экран
👉 Проблема Массивных SwiftUI View
👉 Использование LLDB для отладки изменений
👉 Использование _logChanges в Xcode 15.1
👉 Решаем проблемы с перерисовкой в SwiftUI
👉 Отладка изменений с помощью кода. Что такое
@self
и @identity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15👎1