Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FROM MV(X) TO VIP(ER)

FROM MV(X) TO VIP(ER)

Giovane Possebon

May 11, 2016
Tweet

More Decks by Giovane Possebon

Other Decks in Technology

Transcript

  1. "BECAUSE IF YOU DON’T, ONE DAY, DEBUGGING A HUGE CLASS

    WITH DOZENS DIFFERENT THINGS, YOU’LL FIND YOURSELF BEING UNABLE TO FIND AND FIX ANY BUGS IN YOUR CLASS." Someone who’s right WHY CARE ABOUT IT? 4
  2. WHY CARE ABOUT IT? REASONS ▸ This class is the

    UIViewController subclass. ▸ Your data is stored directly in the UIViewController ▸ Your UIViews do almost nothing ▸ The Model is a dumb data structure ▸ Your Unit Tests cover nothing 5
  3. WHY CARE ABOUT IT? SO WHAT A GOOD ARCHITECTURE SHOULD

    HAVE? ▸ Balanced distribution of responsibilities among entities with strict roles. ▸ Testability usually comes from the first feature. ▸ Ease of use and a low maintenance cost. 6
  4. MVC - MODEL-VIEW-CONTROLLER HOW IT REALLY IS VIEW CONTROLLER MODEL

    Owns and updates Notifies Massive View Controller 13
  5. MVC - MODEL-VIEW-CONTROLLER CONCLUSION ▸ Distribution of Responsibilities - View

    and controller tightly coupled ▸ Testability - Only model is testable ▸ Ease of Use - Low amount of code. Everyone is familiar with it. 14
  6. MVP - MODEL-VIEW-PRESENTER MVC IN THE RIGHT WAY PASSIVE VIEW

    PRESENTER MODEL Updates Owns and updates Owns and send actions Notifies 17
  7. MVP - MODEL-VIEW-PRESENTER MVC IN THE RIGHT WAY PASSIVE VIEW

    PRESENTER MODEL Updates Owns and updates Owns and send actions Notifies UIViewController UIKit independent mediator 18
  8. MVP - MODEL-VIEW-PRESENTER CONCLUSION ▸ Distribution of Responsibilities - Most

    of responsibilities divided between the Presenter and the Model, with the pretty dumb View ▸ Testability - Good, we can test most of the business logic due to the dumb View ▸ Ease of Use - Substantial amount of code, although idea is very clear 19
  9. MVVM - MODEL-VIEW-VIEWMODEL THE GREATEST OF THE MV(X) KIND VIEW

    VIEWMODEL MODEL Updates Owns and updates Owns and send actions Notifies 21
  10. MVVM - MODEL-VIEW-VIEWMODEL CONCLUSION ▸ Distribution of Responsibilities - Similar

    to MVP, but View has more responsibilities than the MVP’s ▸ Testability - View Model knows nothing about the View, this allows us to test it easily. The View might be also tested ▸ Ease of Use - It has almost the same amount of code as the MVP 22
  11. VIPER THE LEGO ARCHITECTURE VIEW PRESENTER ENTITY Updates Owns and

    asks for updates Owns and send actions Notifies INTERACTOR ROUTER Knows about 24
  12. VIPER THE LEGO ARCHITECTURE VIEW PRESENTER ENTITY Updates Owns and

    asks for updates Owns and send actions Notifies INTERACTOR ROUTER Knows about Manipulates data and use cases UIKit independent mediator Former Model 25
  13. VIPER CONCLUSION ▸ Distribution of Responsibilities - VIPER is a

    champion in distribution of responsibilities. ▸ Testability - better distribution — better testability ▸ Ease of Use - You have to write huge amount of interface for classes with very small responsibilities. 26
  14. VIP THE CLEAN ARCHITECTURE VIEW PRESENTER ENTITY Updates Process and

    deliver data Send actions INTERACTOR ROUTER Knows about Owns 28
  15. VIP THE CLEAN ARCHITECTURE VIEW PRESENTER ENTITY Updates Process and

    deliver data Send actions INTERACTOR ROUTER Knows about Owns UIKit independent mediator Former Model 29
  16. VIP CONCLUSION ▸ Distribution of Responsibilities - VIP is as

    good as VIPER in terms of distribution of responsibilities. ▸ Testability - Also comparable to VIPER ▸ Ease of Use - Great amount of classes with very small responsibilities, but clearer than VIPER 30