Как стать автором
Обновить
76.89
red_mad_robot
№1 в разработке цифровых решений для бизнеса

Боксы, микрофичи и хлебные крошки: как прошёл iOS-митап red_mad_robot

Время на прочтение4 мин
Количество просмотров1.2K

17 ноября мы провели в нашем московском Робохранилище митап для iOS-разработчиков. Говорили про обобщённое программирование в Swift, метаморфозу архитектуры и нативную навигацию, ели пиццу — а теперь рассказываем подробнее, как всё прошло.

Generics. Самая непонятная часть в Swift

Технический директор red_mad_robot spb Шурик Бабаев начал своё выступление с краткого экскурса в обобщённое программирование, или метапрограммирование. По его словам, оно начинается в тот момент, когда нам не хватает обычного.

К примеру, есть алгоритм, и мы хотим, чтобы он всегда работал одинаково — код, который обрабатывает данные, один и тот же, но типы разные: со строкой или с числом — неважно. Появляется естественное желание не дублировать этот код. И в этот момент возникает метапрограммирование — чтобы написать один код и впоследствии использовать его для разных целей.

Первый, сравнительно простой вариант, как это реализовать, — боксинг. Второй — страшное слово «мономорфизация».

После вступительной части Шурик перешёл к основной, где рассказал о метапрограммировании в Swift.

Меня в принципе интересует, что происходит в Swift: как язык устроен, зачем он так устроен и почему. Поэтому я с удовольствием наблюдаю за его эволюцией и в какой-то момент стал следить за развитием дженериков в Swift. Для меня это самая непонятная часть в Swift, я до сих пор не всегда понимаю, что нужно написать, чтобы оно сработало. Там долгие полтора-два года что-то переписывалось — мне было очень интересно, поэтому я стал разбираться, как же они устроены.

Шурик Бабаев, технический директор red_mad_robot spb

Полное выступление можно посмотреть ниже, а также скачать презентацию.

Метаморфоза архитектуры. От SOA к микрофичам

iOS-разработчики red_mad_robot Стас Анацкий и Влад Марков начали свой доклад с небольшого вступления о том, что не будут касаться presentation-архитектур, а расскажут о SOA и микрофичевой архитектуре, которые применили на одном из своих проектов. А метаморфоза заключается в том, что SOA применяется на уровне core-компонентов и по мере движения к presentation-слою используется MSA.

SOA, сервисно-ориентированная архитектура, очевидно была придумана, чтобы решить какую-то проблему. А есть ли проблема? Все мы знаем про SOLID, стараемся придерживаться принципов. Но приходит время строить сложный слой приложений — и возникают вопросы. Это должна быть какая-то сущность, которая в целом отвечает за работу сети. Но в реальности количество запросов от сети обычно очень большое, и такая сущность начнёт увеличиваться в размерах.

Стас Анацкий, iOS-разработчик red_mad_robot

Прежде чем углубляться в архитектуру, ребята предложили определить, на каком уровне абстракции они находятся. Как минимум, можно выделить два слоя: presentation- и бизнес-слой. На первом происходит контроль отображения данных и обработки действий пользователя, второй отвечает за работу с сетью и персистенси. И доклад ребят был сконцентрирован именно на слое бизнес-логики.

Полное выступление Влада и Стаса можно посмотреть ниже, а также скачать презентацию.

Нативная навигация в SwiftUI до iOS16

Выступление Юли Никитиной, главного разработчика «Иннотеха», было посвящено «хлебным крошкам» (breadcrumbs) и отталкивалось от одной задачи — реализовать в приложении веб-навигацию с возможностью быстрого перехода к любому вью из стека.

Казалось бы, разбивай её на подзадачи:

  • получить доступ к стеку навигации,

  • получить возможность хранить и произвольно менять состав стека,

  • сбрасывать стек при возврате на главный экран, —

и вперёд! В UIKit, например, всё это достаточно очевидно: за доступ к стеку отвечает .viewControllers, за возможность его сбрасывать — popToRootViewController, а за возможность произвольно менять его состав — setViewControllers и popToViewController.

Но не всё так просто.

Наше приложение было полностью написано на SwiftUI, и, конечно, нам не хотелось как-то добавлять UIKit, возвращаться на прежний код. В UIKit есть прекрасные методы управления стеком, но, к сожалению, в SwiftUI до iOS16 ничего подходящего для этой задачи нет. Там есть проблема в том, что код «прибит гвоздями» к UI, и NavigationLink никак нельзя извлечь из presentation-слоя — помимо архитектурных проблем, это ещё влечёт за собой отсутствие какого-то доступа к стеку.

Юля Никитина, главный разработчик «Иннотех»

О том, как было решена эта проблема, подробнее можно посмотреть в видео выступления Юли, а также скачать презентацию.

Делимся железной экспертизой от практик в нашем телеграм-канале red_mad_dev. А полезные видео складываем на одноимённом YouTube-канале. Присоединяйся!

Теги:
Хабы:
+3
Комментарии0

Публикации

Информация

Сайт
redmadrobot.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия