Очень интересная статья, но есть пара вопросов:
1 — При таком подходе количество методов от вью модели уменьшается, но появляется один огромный метод со свитч-кейсами, по мне так, чем функции компактнее и меньше тем код лучше читается. В своей работе сталкивался с проектом где был метод setCallbacks с огромным свитч-кейсом который не умещался в 2 экрана )
2 — self.handleClosure = { [weak vm] in vm?.handle(event: $0) }//vm.handle
Лично мне не нравится когда вместо отступов много кода идет в одну строку. Строчек кода меньше, но читаемость хуже
3 — Вот эта вот штука let vm: Any?
Не люблю Any, может стоило бы создать хоть и пустой но протокол, например protocol ViewModel {} и его конформить каждой новой моделью?
Спасибо за статью, у меня в приложении есть несколько сервисов и синглтонов, есть аналог координатора — синглтон Router который отвечает за работу таб бара, navigation controller-ов и так далее, вот думаю теперь стоит ли это все добавить «под крыло» локатора, вот только думаю а надо ли, впереди маячит задача с несколькими пользователями и User сейчас сделан как синглтон, других плюсов чтобы осуществлять рефакторинг пока не вижу, и не знаю надо ли оно. Но статья хорошая, теперь хоть стало понятно что это такое.
Идея понятна, только вот iOS SDK полностью завязан на делегатах, и большинство разработчиков так и привыкло с этим работать, и сразу поймет где смотреть методы делегата UITextField и как они работают. В данном случае вы оборачиваете колбэки от делегатов в замыкания, и код в ObserverHolder сложно читаемый. Плюсы, подхода, конечно видны, но вы по сути отклоняетесь от принятого стиля написания кода.
1 — При таком подходе количество методов от вью модели уменьшается, но появляется один огромный метод со свитч-кейсами, по мне так, чем функции компактнее и меньше тем код лучше читается. В своей работе сталкивался с проектом где был метод setCallbacks с огромным свитч-кейсом который не умещался в 2 экрана )
2 — self.handleClosure = { [weak vm] in vm?.handle(event: $0) }//vm.handle
Лично мне не нравится когда вместо отступов много кода идет в одну строку. Строчек кода меньше, но читаемость хуже
3 — Вот эта вот штука let vm: Any?
Не люблю Any, может стоило бы создать хоть и пустой но протокол, например protocol ViewModel {} и его конформить каждой новой моделью?