Factors to consider No MVC (no MVVM or MVP, too) - MVC stands for Massive View Controller - Keeping components simple Single Activity Application - We’re making a map-based application No time to create a framework from scratch - Conductor, Scoop, ReSwift, ReactorKit, Reflex, …
Factors to consider No MVC (no MVVM or MVP, too) - MVC stands for Massive View Controller - Keeping components simple Single Activity Application - We’re making a map-based application No time to create a framework from scratch - Conductor, Scoop, ReSwift, ReactorKit, Reflex, …
Factors to consider No MVC (no MVVM or MVP, too) - MVC stands for Massive View Controller - Keeping components simple Single Activity Application - We’re making a map-based application No time to create a framework from scratch - Conductor, Scoop, ReSwift, ReactorKit, Reflex, …
Convoluted state machines Change Email Home Screen Menu Search for Location Change Vehicle Options Refine Location Request Vehicle Vehicle Matched Receipt On trip Verify Phone Number
Scopes class AuthenticateNetworkRequest: NetworkRequest { private var authToken: String? public func makeRequest() { if let authToken = authToken { addAuthToken(authToken) } super.makeRequest() }
Scopes // `authToken` is not null in MainScope class AuthenticateNetworkRequest: NetworkRequest { private var authToken: String public func makeRequest() { addAuthToken(authToken) super.makeRequest() } }
Animations No consideration in Uber RIBs Need to think about RIBs transitions UITransitioningDelegate in UIViewController HeroTransitions func transition(from: UIViewController, to: UIViewController) in view: UIView, completion: ((Bool) -> Void)? = nil)
Wrap-up 1 Multi-platform architecture 2 Router, Inteactor, Builder, Presenter, and View 3 Business logic determines the state tree 4 Scopes 5 Unidirectional data flow, Animations, Lifecycle