В докладе речь пойдет о целесообразности использования ФРП (Functional Reactive Programming) в современной мобильной разработке на примере RxSwift под iOS. Еще год назад мне казалось, что невозможно писать код без использования Rx, а все самописные велосипеды, призванные в очередной раз реализовать паттерн Observer — от лукавого. Во всех проектах, в которых мне довелось поучаствовать, в числе которых две версии Яндекс.Карт под Windows Phone и iOS, Rx стал одной из главных библиотек, насквозь пронизывающей все слои приложения. В последнее время моё отношение к Rx стало гораздо более прагматичным в силу ряда причин, о которых я расскажу в докладе.
Цель моего доклада — поглубже посмотреть на устройство одного из самых популярных фреймворков для ФРП под iOS — RxSwift и на его примере показать, что Rx как и любой инструмент — это лишь удобный способ решения определенного спектра задач. Мы поговорим о best practices при использовании Rx, тонкостях использования различных компонентов любого современного Rx фреймворка, таких как Subject, Scheduler, Trait и других, рассмотрим способы тестирования сложных time-dependent фич, коснемся вопросов о контрактах Rx и многом другом, а главное, попытаемся понять, помогут ли все эти знания сделать наш проект более понятным, поддерживаемым и bug-free.
Последние полтора года являюсь разработчиком Яндекс.Карт под iOS. До этого занимался разработкой десктопных приложений на .NET и Яндекс.Карт под Windows Phone. Одним из любимых занятий на работе является внедрение новых технологий и подходов в проекты начиная с CI и заканчивая различными малоизвестными фреймворкмами в духе AutoFixture под .NET или SwiftyMocky под iOS. Люблю похоливарить на тему архитектуры ПО и вопросов касающихся тестирования приложений.