💡 Повышаем качество кода iOS
Задумывались ли вы, как улучшить качество кода? Предлагаем взглянуть на статью, которая содержит несколько советов для разработчиков iOS, чтобы избежать распространённых ошибок и помочь им улучшить свои приложения. Статья состоит из пяти разделов, каждый из которых посвящен определенному аспекту разработки iOS, такому как качество кода, управление зависимостями, автоматизация, интеграция Firebase и генерация кода.
Например, он рекомендует использовать SwiftLint для проверки качества кода и соблюдения стиля, CocoaPods для управления зависимостями и интеграции сторонних библиотек, Fastlane для автоматизации сборки, тестирования и развертывания приложений.
Читать
Задумывались ли вы, как улучшить качество кода? Предлагаем взглянуть на статью, которая содержит несколько советов для разработчиков iOS, чтобы избежать распространённых ошибок и помочь им улучшить свои приложения. Статья состоит из пяти разделов, каждый из которых посвящен определенному аспекту разработки iOS, такому как качество кода, управление зависимостями, автоматизация, интеграция Firebase и генерация кода.
Например, он рекомендует использовать SwiftLint для проверки качества кода и соблюдения стиля, CocoaPods для управления зависимостями и интеграции сторонних библиотек, Fastlane для автоматизации сборки, тестирования и развертывания приложений.
Читать
🔥2
⚔️ Структурно-ориентированное программирование против протокольно-ориентированного программирования в Swift
Структурно-ориентированное программирование (SOP) подразумевает построение приложений с использованием структур, перечислений и примитивов. Этот подход упрощает код, делает его более предсказуемым и безопасным с точки зрения памяти благодаря избеганию общих ссылок и мутации состояния.
Протокольно-ориентированное программирование (POP) это идеология, в которой протоколы используются для определения и реализации поведения и функциональности. Протоколы в Swift позволяют создавать гибкие и модульные программные интерфейсы. Они также поддерживают расширения, что позволяет добавлять функциональность к существующим типам без наследования.
Сравним два подхода:
1. Наследование: структуры не поддерживают наследование, что делает иерархии типов более простыми и устойчивыми к изменениям, а протоколы поддерживают множественное наследование через конформность нескольким протоколам.
2. Изменяемость: структуры являются значимыми типами (value types) и предоставляют автоматическую безопасность потоков за счёт копирования значений при передаче, а протоколы, в свою очередь, не определяют, является ли тип значимым или ссылочным, оставляя выбор на усмотрение разработчика.
3. Повторное использование кода: у SOP это может быть ограничено, поскольку структуры не могут наследоваться, что иногда приводит к дублированию кода, а POP, в свою очередь, улучшает повторное использование кода и уменьшает связанность, поскольку различные типы могут совместно использовать один и тот же протокол.
Подводя итоги, в Swift рекомендуется комбинировать оба подхода, используя преимущества структур для создания безопасных и эффективных типов данных, а протоколы — для определения интерфейсов и поведения.
Структурно-ориентированное программирование (SOP) подразумевает построение приложений с использованием структур, перечислений и примитивов. Этот подход упрощает код, делает его более предсказуемым и безопасным с точки зрения памяти благодаря избеганию общих ссылок и мутации состояния.
Протокольно-ориентированное программирование (POP) это идеология, в которой протоколы используются для определения и реализации поведения и функциональности. Протоколы в Swift позволяют создавать гибкие и модульные программные интерфейсы. Они также поддерживают расширения, что позволяет добавлять функциональность к существующим типам без наследования.
Сравним два подхода:
1. Наследование: структуры не поддерживают наследование, что делает иерархии типов более простыми и устойчивыми к изменениям, а протоколы поддерживают множественное наследование через конформность нескольким протоколам.
2. Изменяемость: структуры являются значимыми типами (value types) и предоставляют автоматическую безопасность потоков за счёт копирования значений при передаче, а протоколы, в свою очередь, не определяют, является ли тип значимым или ссылочным, оставляя выбор на усмотрение разработчика.
3. Повторное использование кода: у SOP это может быть ограничено, поскольку структуры не могут наследоваться, что иногда приводит к дублированию кода, а POP, в свою очередь, улучшает повторное использование кода и уменьшает связанность, поскольку различные типы могут совместно использовать один и тот же протокол.
Подводя итоги, в Swift рекомендуется комбинировать оба подхода, используя преимущества структур для создания безопасных и эффективных типов данных, а протоколы — для определения интерфейсов и поведения.
👍1
🚀 Улучшаем производительность кода на SwiftUI с помощью Observation
Observation framework — новый компонент стандартной библиотеки Swift, который позволяет наблюдать за изменениями свойств ссылочных типов и улучшать производительность SwiftUI.
В данной статье автор рассматривает новый фреймворк, принципы его создания, способы использования и принципы работы.
Observation framework — новый компонент стандартной библиотеки Swift, который позволяет наблюдать за изменениями свойств ссылочных типов и улучшать производительность SwiftUI.
В данной статье автор рассматривает новый фреймворк, принципы его создания, способы использования и принципы работы.
🔥2
Forwarded from Библиотека Go-разработчика | Golang
❔ Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года
В данной статье мы собрали 20+ главных инсайтов, которые помогут лучше понять, что происходит в ИТ-сфере в мире.
🔗 Читать статью
🔗 Зеркало
В данной статье мы собрали 20+ главных инсайтов, которые помогут лучше понять, что происходит в ИТ-сфере в мире.
🔗 Читать статью
🔗 Зеркало
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
В видео вы узнаете, как писать, компилировать и запускать скрипты на Swift в терминале. Также автор показывает, как добавить фазу сборки скрипта в проект Xcode. Это полезно для автоматизации различных задач, связанных с разработкой приложений на Swift.
Смотреть
#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Зажгите огонек в глазах рекрутера, чтобы обратили внимание именно на вас!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤🔥1
В статье предлагаются полезные советы по улучшению видимости и привлекательности мобильных приложений в магазине RuStore. Основные аспекты включают правильное оформление карточки приложения, создание уникального и запоминающегося названия, оптимизацию поисковой выдачи с помощью ключевых слов и эффективное описание приложения. Рекомендации помогут повысить интерес и доверие пользователей к приложение.
Подробно можно ознакомиться по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
#дайджест полезностей мобильного разработчика
🍏 Swift Charts — создаем график для отображения данных о весе.
🍏 SwiftUI Keyframe Animations — переписать старые анимации с помощью нового API Keyframes, и сравнивнение преимущества и недостатки обоих подходов.
🍏 Модульная навигация SwiftUI — статья рассказывает о том, как реализовать модульную навигацию в SwiftUI.
🍏 MVI в SwiftUI — как легко реализовать архитектуру MVI (Model-View-Intent) в SwiftUI. Автор объясняет, что такое MVI и какие преимущества она имеет перед другими подходами.
🍏 User Location в SwiftUI — новый API для получения местоположения пользователя в SwiftUI. Как использовать новый класс NewLocationManager, который упрощает запрос разрешения на доступ к службам геолокации и получение обновлений местоположения.
🍏 Swift Charts — создаем график для отображения данных о весе.
🍏 SwiftUI Keyframe Animations — переписать старые анимации с помощью нового API Keyframes, и сравнивнение преимущества и недостатки обоих подходов.
🍏 Модульная навигация SwiftUI — статья рассказывает о том, как реализовать модульную навигацию в SwiftUI.
🍏 MVI в SwiftUI — как легко реализовать архитектуру MVI (Model-View-Intent) в SwiftUI. Автор объясняет, что такое MVI и какие преимущества она имеет перед другими подходами.
🍏 User Location в SwiftUI — новый API для получения местоположения пользователя в SwiftUI. Как использовать новый класс NewLocationManager, который упрощает запрос разрешения на доступ к службам геолокации и получение обновлений местоположения.
❤4👍1🔥1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за октябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
📊 Эффективная работа с JSON в Go
🔝 Лучшие практики Go: путь к чистому коду
📚 ТОП-8 книг по DevOps в 2023 году
💪 6 сервисов для подготовки к техническим собеседованиям
🗺️ Карьерная карта: что это, как ее составить и почему она обязательно нужна разработчику
🛡️ 8 способов защиты от манипуляций на работе
👩💻 Женщины в ИТ: проблемы и преимущества сложной профессии
🤖 8 лучших бесплатных курсов по ИИ и глубокому обучению
👨💻 9 трендов в найме айтишников в 2023 году
🤔 9 мифов об IT и найме айтишников
🤖 25 бесплатных AI-инструментов для разработчиков
☁️ ТОП-10 бессерверных фреймворков
🚩 Итог одной валютной удаленки: проработал месяц бесплатно и ушел с долгами
💻 20 лучших ноутбуков для программиста в 2023 году
🧠 Как научиться критически мыслить: 6 эффективных способов
❔ Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года
📊 Эффективная работа с JSON в Go
🔝 Лучшие практики Go: путь к чистому коду
📚 ТОП-8 книг по DevOps в 2023 году
💪 6 сервисов для подготовки к техническим собеседованиям
🗺️ Карьерная карта: что это, как ее составить и почему она обязательно нужна разработчику
🛡️ 8 способов защиты от манипуляций на работе
👩💻 Женщины в ИТ: проблемы и преимущества сложной профессии
🤖 8 лучших бесплатных курсов по ИИ и глубокому обучению
👨💻 9 трендов в найме айтишников в 2023 году
🤔 9 мифов об IT и найме айтишников
🤖 25 бесплатных AI-инструментов для разработчиков
☁️ ТОП-10 бессерверных фреймворков
🚩 Итог одной валютной удаленки: проработал месяц бесплатно и ушел с долгами
💻 20 лучших ноутбуков для программиста в 2023 году
🧠 Как научиться критически мыслить: 6 эффективных способов
❔ Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года
👍3
Как вы думаете, насколько важно, чтобы приложение работало быстро и не зависало? С точки зрения пользователя, производительность — это всё. Скорость является критически важным фактором для мобильных приложений по нескольким причинам: пользовательский опыт, влияние на рейтинги и отзывы, удержание пользователей, эффективность использования ресурсов и конкурентоспособность.
В статье говорится про важность мобильного тестирования производительности, как проводить и какие инструменты и методики для этого использовать. Подробнее в статье.
Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Я: открываю репозиторий, в ожидании увидеть понятный гайд по работе с кодом
Также файл ReadMe, лежащий в нём:
#memes
Также файл ReadMe, лежащий в нём:
#memes
😁8
🤔 Задача A: Yandex Cup 2023 — iOS
Представлен код на Swift. Выберите правильные идеи относительно того, что хотел сказать автор:
1. оператор должен быть postfix
2. @escaping в объявлении избыточен
3. @autoclosure в объявлении избыточен
4. throws в объявлении избыточен
5. тип переменной v в данном случае является типом неопционального(Wrapped) значения
6. данный код не скомпилируется
7. Wrapped в данном примере является generic типом
8. для такого объявления нужно объявить собственный тип ошибки вместо типа Error
9. без явного задания precedence group оператор будет объявлен с DefaultPrecedence
Разбор ответов:
1. Оператор должен быть postfix: Оператор !! объявлен как infix, что подразумевает использование его между двумя операндами (например, a !! b). Если бы он должен был быть postfix, то он бы использовался после операнда (например, a!!). В данном контексте, если оператор предназначен для использования с одним операндом Optional, то он должен был бы быть postfix, но по коду видно, что он принимает два аргумента, так что это утверждение неверное.
2. @escaping в объявлении избыточен: Атрибут @escaping используется, когда замыкание может быть вызвано после того, как функция, которой оно было передано, завершит выполнение. В данном коде нет никаких признаков, что замыкание будет использоваться вне функции, так что атрибут избыточен.
3. @autoclosure в объявлении избыточен: Атрибут @autoclosure создает замыкание из выражения автоматически, что удобно, когда функция должна быть вызвана с выражением в качестве аргумента, которое должно быть вычислено только при необходимости. В данном контексте, если функция всегда будет вызывать e() в случае ошибки, использование @autoclosure уместно для упрощения вызова функции.
4. throws в объявлении избыточен: Поскольку функция действительно выбрасывает ошибку (через оператор throw), в сигнатуре функции обязательно должно быть указание throws, указывающее, что функция может вызвать исключение.
5. Тип переменной v является типом неопционального (Wrapped) значения: Это неверно, так как в контексте Optional, Wrapped относится к типу данных, который Optional может содержать, и может быть как опциональным, так и неопциональным в зависимости от контекста.
6. Данный код не скомпилируется: Не можем быть уверены без дополнительного контекста и тестирования в компиляторе.
7. Wrapped в данном примере является generic типом: Это верно, Wrapped является обобщенным типом, который Optional «оборачивает», и может представлять любой тип.
8. Для такого объявления нужно объявить собственный тип ошибки вместо типа Error: Это неверно, так как Error - это общий протокол для типов ошибок в Swift, который может быть реализован любым пользовательским типом ошибки.
9. Без явного задания precedence group оператор будет объявлен с DefaultPrecedence: Это утверждение верно. Если группа приоритета для оператора не задана, то по умолчанию используется DefaultPrecedence, что влияет на порядок, в котором операторы будут применяться при разборе выражений.
infix operator !!
extension Optional {
public static func !!(
v: Self,
e: @escaping @autoclosure () > Error
) throws -> Wrapped {
guard let unwrapped = v else { throw e() )
} return unwrapped
}
}
Представлен код на Swift. Выберите правильные идеи относительно того, что хотел сказать автор:
1. оператор должен быть postfix
2. @escaping в объявлении избыточен
3. @autoclosure в объявлении избыточен
4. throws в объявлении избыточен
5. тип переменной v в данном случае является типом неопционального(Wrapped) значения
6. данный код не скомпилируется
7. Wrapped в данном примере является generic типом
8. для такого объявления нужно объявить собственный тип ошибки вместо типа Error
9. без явного задания precedence group оператор будет объявлен с DefaultPrecedence
1. Оператор должен быть postfix: Оператор !! объявлен как infix, что подразумевает использование его между двумя операндами (например, a !! b). Если бы он должен был быть postfix, то он бы использовался после операнда (например, a!!). В данном контексте, если оператор предназначен для использования с одним операндом Optional, то он должен был бы быть postfix, но по коду видно, что он принимает два аргумента, так что это утверждение неверное.
2.
3.
4. throws в объявлении избыточен: Поскольку функция действительно выбрасывает ошибку (через оператор throw), в сигнатуре функции обязательно должно быть указание throws, указывающее, что функция может вызвать исключение.
5. Тип переменной v является типом неопционального (Wrapped) значения: Это неверно, так как в контексте Optional, Wrapped относится к типу данных, который Optional может содержать, и может быть как опциональным, так и неопциональным в зависимости от контекста.
6. Данный код не скомпилируется: Не можем быть уверены без дополнительного контекста и тестирования в компиляторе.
7. Wrapped в данном примере является generic типом: Это верно, Wrapped является обобщенным типом, который Optional «оборачивает», и может представлять любой тип.
8. Для такого объявления нужно объявить собственный тип ошибки вместо типа Error: Это неверно, так как Error - это общий протокол для типов ошибок в Swift, который может быть реализован любым пользовательским типом ошибки.
9. Без явного задания precedence group оператор будет объявлен с DefaultPrecedence: Это утверждение верно. Если группа приоритета для оператора не задана, то по умолчанию используется DefaultPrecedence, что влияет на порядок, в котором операторы будут применяться при разборе выражений.
👍6❤3
📣 Apple анонсировала Swift Student Challenge 2024
Swift Student Challenge — это мероприятие, запущенное Apple для поддержки студентов-разработчиков в течение длительного времени, которые учатся и создают приложения на языке программирования Swift.
Приём заявок от студентов со всего мира начнётся в феврале следующего года.
Из 350 победителей Swift Student Challenge 2024 будут отобраны 50 выдающихся участников, которые получат возможность посетить штаб-квартиру Apple в Купертино, штат Калифорния, чтобы пообщаться с другими победителями и командой Apple.
Все победители Swift Student Challenge 2024 получат памятные призы от Apple, годовое членство в программе Apple Developer Program и бесплатный ваучер на сдачу сертификационного экзамена по разработке приложений с помощью Swift.
📖Ознакомиться
Swift Student Challenge — это мероприятие, запущенное Apple для поддержки студентов-разработчиков в течение длительного времени, которые учатся и создают приложения на языке программирования Swift.
Приём заявок от студентов со всего мира начнётся в феврале следующего года.
Из 350 победителей Swift Student Challenge 2024 будут отобраны 50 выдающихся участников, которые получат возможность посетить штаб-квартиру Apple в Купертино, штат Калифорния, чтобы пообщаться с другими победителями и командой Apple.
Все победители Swift Student Challenge 2024 получат памятные призы от Apple, годовое членство в программе Apple Developer Program и бесплатный ваучер на сдачу сертификационного экзамена по разработке приложений с помощью Swift.
📖Ознакомиться
👍2🔥2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤔Почему новость о выходе релиза Kotlin 1.9.20 относится не только к мобильным разработчикам? Дело в том, что команда Kotlin представила стабильный выпуск Kotlin Multiplatform (KMP), который готов к использованию в продакшене. Да и Kotlin сам по себе среди прочего компилируется в Wasm, что значительно расширяет его возможности.
🤩Технология KMP призвана упростить разработку кроссплатформенных проектов. Это сокращает время, затрачиваемое на написание и поддержку одного и того же кода для разных платформ, сохраняя при этом гибкость и преимущества нативной разработки.
🔥Узнайте подробнее об эволюции KMP, о том, как она может оптимизировать процесс разработки и какие образовательные ресурсы доступны для вас, чтобы максимально эффективно использовать эту технологию.
#новости
🤩Технология KMP призвана упростить разработку кроссплатформенных проектов. Это сокращает время, затрачиваемое на написание и поддержку одного и того же кода для разных платформ, сохраняя при этом гибкость и преимущества нативной разработки.
🔥Узнайте подробнее об эволюции KMP, о том, как она может оптимизировать процесс разработки и какие образовательные ресурсы доступны для вас, чтобы максимально эффективно использовать эту технологию.
#новости
🎉7❤1👍1
🚦 Google вводит новые правила проверки приложений в Play
Google ввела новые правила для проверки приложений в Google Play, целящиеся на повышение качества приложений на платформе. Теперь все разработчики должны соответствовать расширенным требованиям перед публикацией приложений. Разработчики могут выбирать сроки проверки в Play Console, и если срок не выбран до 29 февраля 2024 года, Google назначит его автоматически. Новые личные аккаунты разработчиков должны тестировать приложения на группе пользователей перед выпуском. Время на проверку приложений увеличено, чтобы обеспечить их безопасность и соответствие политикам Google.
Подробнее можно ознакомиться здесь.
Google ввела новые правила для проверки приложений в Google Play, целящиеся на повышение качества приложений на платформе. Теперь все разработчики должны соответствовать расширенным требованиям перед публикацией приложений. Разработчики могут выбирать сроки проверки в Play Console, и если срок не выбран до 29 февраля 2024 года, Google назначит его автоматически. Новые личные аккаунты разработчиков должны тестировать приложения на группе пользователей перед выпуском. Время на проверку приложений увеличено, чтобы обеспечить их безопасность и соответствие политикам Google.
Подробнее можно ознакомиться здесь.
👍2🔥2