Улучшите архитектуру Вашего Кода с помощью принципов SOLID (с примерами Swift)
Начинаем неделю с моей любимой рубрики, статья от подписчика Maxim Egorov. Тема статьи никогда не устареет, понимание применения SOLID принципов поможет вам улучшить ваш код. SOLID помогает писать чистый, масштабируемый и поддерживаемый код. Следование принципам уменьшает зависимости, повышает гибкость и упрощает расширение и тестирование.
⌨️ Принцип единой ответственности. Каждый объект должен выполнять только одну задачу и иметь только одну причину для изменения
⌨️ Принцип открытия/закрытия. Код должен быть открыт для расширения, но закрыт для модификации
⌨️ Принцип замещения - Лисков. Подклассы должны заменять родительский класс без изменения логики программы
⌨️ Принцип разделения интерфейсов. Классы не должны принуждаться к реализации методов, которые им не нужны
⌨️ Принцип инверсии зависимостей. Модули высокого уровня не должны зависеть от модулей низкого уровня
Выводы
🔵 Применение принципов SOLID делает код стабильным, адаптируемым и устойчивым к сложности
🔵 SOLID помогает предотвратить хаос в проектах
🔵 Улучшает организацию, поддержку, тестирование и расширение кода
🔵 SOLID помогает создавать масштабируемые и гибкие архитектуры
#solid
Начинаем неделю с моей любимой рубрики, статья от подписчика Maxim Egorov. Тема статьи никогда не устареет, понимание применения SOLID принципов поможет вам улучшить ваш код. SOLID помогает писать чистый, масштабируемый и поддерживаемый код. Следование принципам уменьшает зависимости, повышает гибкость и упрощает расширение и тестирование.
Выводы
#solid
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
Базовое понимание принципов криптографии помогает понять как работает защита информации, как совершаются атаки и что такое доверительные цепочки. Проще всего разобраться в теории с примерами и данная статья как раз про это. Криптография с открытым ключом основана на паре связанных ключей: открытый и закрытый. Открытый ключ используется для шифрования, закрытый — для расшифровки. Получение закрытого ключа из открытого невозможно с точки зрения вычислений.
Варианты использования криптографии с открытым ключом:
Алгоритмы с открытым ключом, поддерживаемые CryptoKit:
#CryptoKit
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
В этом году WWDC пройдёт с 9 по 13 июня, начало в 20:00 GMT+3. Анимация как всегда содержит намек, похоже, утечки про редизайн в стиле VisionOS были правдивы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Swift Concurrency становится неотъемлемой частью iOS-приложений. Но сессии WWDC часто оставляют вопросы о деталях реализации без ответов. Статья поможет понять, как работает параллелизм Swift
Асинхронные функции
Async → await
Tasks
Jobs
Actors
Executors
Совместный пул потоков (CTP)
Параллелизм Swift устраняет проблемы с обратным вызовом и предлагает более понятный синтаксис. Для полного понимания параллелизма в Swift требуется время и практика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Продолжаю внимательно смотреть с забора на использование SwiftData на проде. Если в pet-проектах всегда все хорошо, то на проде совсем не так. ModelActor вызывает много вопросов и проблем. Он защищает контекст модели, но не является потокобезопасным. ModelActor использует пользовательский actor executor, что необходимо для совместимости с Core Data.
Странное поведение ModelActor
Контекст создания ModelActor
Фоновый доступ к ModelActor
Все детали того как можно обойти эти проблемы детально рассмотрены в статье.
#SwiftData
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Пока мы спали, команда Apple представила в своем блоге новый инструмент - swiftly. Это первая стабильная версия менеджера версий Swift. Он избавляет от необходимости устанавливать и обновлять набор инструментов Swift вручную. Поддерживает macOS и Linux. Разработан командой SPM на swift и использует Foundation, Async HTTP Client и Swift OpenAPI для взаимодействия с блогом swift.org. Можно посмотреть реализацию в репе.
Особенности
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3
Группы задач позволяют выполнять несколько параллельных задач и ждать их завершения.
async let
синтаксис предлагает неявный способ работы с группами задач.taskA
и taskB
await
дважды выполнение будет приостановлено дваждыwithTaskGroup
taskA
и taskB
З
адачи A и B выполняются одновременноasync let
async let
await
, async let
отложено инициализирует значения, как только асинхронная задача вернёт свой результатPlease open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3