💡 Повышаем качество кода 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