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

Jorge Ortiz: Architectural Superpowers

1fa9cb8c7997c8c4d3d251fb5e41f749?s=47 Realm
September 02, 2016

Jorge Ortiz: Architectural Superpowers

Bio:
Jorge is a freelance dedicated to mobile development, security, and systems architecture. As a developer he started to work for the M.I.T. in 1993 and since he has collaborated in many software projects. Most of them were internally for HP where he worked for more than 15 years. Since 2008 he has been working in different aspects of mobile development. After playing with PalmOS, he learned Android programming for the first Google App contest and immediately started to play with the first iPhone SDK. He often participates as instructor in the best iOS and Android Bootcamps in U.S.A. and Europe. He has recently founded Canonical Examples to help other developers to take a step forward and become senior developers in a very demanding market.

Abstract:
We usually hear about intangible or difficult to measure benefits of implementing a good architecture. I would like to prove to you that the benefits are far more mundane. In this talk I will showcase practical, real world examples of how a good architecture for your application makes your life easier. Using my interpretation of the Clean Architecture for iOS in Swift, I will show how it helps to do things such as reusing an existing use case in another view controller, or using a different backend, in case we are forced to do so. I will also cover briefly how this architecture helps with testability.

Twitter: https://twitter.com/jdortiz

1fa9cb8c7997c8c4d3d251fb5e41f749?s=128

Realm

September 02, 2016
Tweet

Transcript

  1. #ArchSuperSwift Architectural Superpowers Jorge D. Ortiz-Fuentes @jdortiz

  2. #ArchSuperSwift A Canonical Examples Production

  3. #ArchSuperSwift Agenda

  4. #ArchSuperSwift Agenda ̣ Superpowers

  5. #ArchSuperSwift Agenda ̣ Superpowers ̣ Scenarios

  6. #ArchSuperSwift Agenda ̣ Superpowers ̣ Scenarios ̣ Recap

  7. Superpowers

  8. #ArchSuperSwift Architecture for You ̣ Less repetition ̣ More reusability

    ̣ Easier maintenance ̣ Less dependent ̣ More testable ̣ Faster to change
  9. #ArchSuperSwift Architecture for You ̣ Less repetition ̣ More reusability

    ̣ Easier maintenance ̣ Less dependent ̣ More testable ̣ Faster to change =
  10. None
  11. Pride

  12. Super Reusability

  13. Single Responsibility Principle View Controller
 Presenter
 View Model Model

  14. Single Responsibility Principle View Controller
 Presenter
 View Model Model Presentation

    logic
  15. Single Responsibility Principle View Controller
 Presenter
 View Model Model Presentation

    logic Data Source Data Source Data Source
  16. Single Responsibility Principle View Controller
 Presenter
 View Model Model Presentation

    logic Business Logic Data Source Data Source Data Source
  17. Super Independence

  18. Dependency Inversion Principle High Level Low Level

  19. Dependency Inversion Principle High Level

  20. Dependency Inversion Principle High Level Abstraction

  21. Dependency Inversion Principle High Level Abstraction

  22. Dependency Inversion Principle High Level Abstraction Low Level

  23. Super Testability

  24. #ArchSuperSwift Testability ̣ Make dependencies explicit ̣ Make dependency injection

    easier ̣ Benefit from other principles
  25. Scenarios

  26. None
  27. 1

  28. Reuse Logic

  29. None
  30. 2

  31. Replace Backend

  32. None
  33. 3

  34. Test

  35. Takeaways

  36. #ArchSuperSwift Recap ̣ Architecture has real, practical benefits ̣ Learn

    the principles ̣ Learn about design patterns ̣ Apply them gradually
  37. Get your superpowers too!

  38. None
  39. Thank You!

  40. @jdortiz #ArchSuperSwift