Как стать автором
Обновить

Комментарии 15

В данной задаче Future больше подходит
Поддерживаю. Фьючесы, промисы и рх отлично подходят для таких задач. А сейчас с iOS 13 прям из коробки библиотека Combine.
Вообще я не считаю правильным сразу тянуть либу для решения подобных задач, однако если у вас в проекте много нетривиальных кейсов, где постоянно происходит изменение данных и это все влияет на ui, то тут уже можно подключить rx, promise и тд, а так всегда лучше решать проблему нативно без сторонних либ. Просто данный пример скорее имеет иллюстративный характер
НЛО прилетело и опубликовало эту надпись здесь
Библиотеки и велосипеды бывают разные, есть либы, которые перестают поддерживаться и в которых могут быть баги, а можно написать свою легковесную обертку и еще тестами покрыть
Просто подход, используемый в статье, не масштабируется. Если будет экран на котором нужно использовать три разных независимых backend API, создавать на каждый из них RequestState будет проблематично, так как в единый момент времени будем много замороженных потоков. Если же шарить общий RequestState, то запросы будут последовательными, а так как вызываемые API являются совершенно разными, то хотелось бы их обрабатывать параллельно. Все эти проблемы уже решены сообществом в опенсорсных библиотеках.
Не обязательно тянуть библиотеку. Реализация минимального функционала промисов занимает пару часов времени.
У вас метод sendRequest является блокирующим, наверное лучше ему дать имя sendSyncRequest. Да и вызывающий тред будет заблокан на время запроса, думаю ему можно найти более нужное применение чем ждать ответа от сервера. Вы реализовали своего рода корутины, но очень не оптимально по ресурсам.

Кажется, ваш reducer — это просто функтор. А сама идея — обычный конечный автомат, он же FSM.

Это так, но идея статьи скорее в том, что иногда можно прибегать ко всяким функциональным штукам, чтобы решить какую-нибудь задачу более красиво и элегантно)

А как ваши коллеги из FINCH отнеслись к этому подходу? Это общие наработки компании или личный вклад?

Это скорее личный вклад, мы даже провели локальный митап, где я показал свои наработки. В целом коллегам понравилось, но мы решили, что еще поработаем на архитектурой и абстракциями в функциональном стиле. Вообще на youtube есть неплохой канал Functional Swift и там много интересных уроков, где чуваки переосмысляют некоторые привычные понятия в функциональном стиле, очень советую)
какой у вас добрый и нетоксичный коллектив!
Спасибо за интересную статью! Книжка «Эффект Медичи» как раз про такой подход в философском смысле)
Ну не знаю, автор конечно молодец, но я бы использовал уже готовые решения c promise. В целом для чтива не плохой материал, почему бы и нет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории