There is a spectrum from zero architecture to and over architected application, with upfront costs, vs. technical debt trade offs. It's up to you and your team to find the right fit, but the ultimate goal is to develop as fast as possible, while maintaining that development speed with well designed code. There is also a spectrum of effort from easy to difficult, with a lot of value lining up at the easy portion, but decreasing over time as things become more complex. Working with zero architecture is the most difficult because the code quickly becomes disorganized and bugs and hacks proliferate. The main pieces of MVA (Presenter/ViewModel, Layer Separation, Dependency Injection, Entities, and Coordinator) fall within the easy, high value portion of the spectrum.
- [Instructor] So, we're going to talk about MVA.…What is MVA?…Well, it has all of the same pieces…as the MVP type architectures.…In fact, it is MVP.…We just have some additional things…like vipers entities,…which are really Bob Martin's entities,…the router which follows the coordinator pattern,…and the interactor which is,…in our case,…the model layer.…And you would find this…in any layer separation ideas.…And then I have injection here…because it simplifies…how our classes work…and it makes us follow solid principles.…
I've put reactive programming as being optional, though.…So, is MVA new?…Well, no.…We've just broken MVC,…MVP,…MBVM,…and Viper…to their different components…and then we're applying them…as we need and see fit.…Most of the benefits are found in level one.…As we progress,…we get less return for our efforts.…After level three,…you need to consider if binding an RX…is right for you and your team.…So we have the spectrum…from no architecture heading to over architecture.…
You can see where our MVP type architectures are.…
Released
6/27/2017- Moving pieces of architecture
- Designing an MVA app
- Walking through a demo application
- Converting to MVP
- Moving non-view logic to a presenter
- Breaking logic into layers
- Using entities
- Setting up dependency injection
- Implementing the coordination pattern
- Adding data binding with RxSwift
Share this video
Embed this video
Video: MVA (mininimum viable architecture)