Using View Models for simpler UI

30531676aaa28c283443b2bbe04e1a7b?s=47 DAloG
September 07, 2016

Using View Models for simpler UI

30531676aaa28c283443b2bbe04e1a7b?s=128

DAloG

September 07, 2016
Tweet

Transcript

  1. @daloog #iosdevuk Component Driven …and modular UI code with ViewModel

    Alexey Demedetskyi
  2. @daloog #iosdevuk https://www.youtube.com/watch?v=dJUEkjxylBw

  3. @daloog #iosdevuk Alexey Demedetskyi dalog@me.com Github Speakerdeck iOS Team lead

    @ Sigma Software
  4. @daloog #iosdevuk MVVM: 2012 - 2015 MVC: 2009 - 2011

    Redux: 2015 - …
  5. @daloog #iosdevuk MVVM

  6. @daloog #iosdevuk How to MVVM 1. Extract ViewModel from ViewController

    2. ??? 3. Good design https://sharpfivesoftware.com/2016/07/20/mvvm-is-lipstick-on-a-pig/
  7. @daloog #iosdevuk

  8. @daloog #iosdevuk View Models

  9. @daloog #iosdevuk “Design is never done.”

  10. @daloog #iosdevuk

  11. @daloog #iosdevuk Art

  12. @daloog #iosdevuk Art Engineering

  13. @daloog #iosdevuk

  14. @daloog #iosdevuk Feedback loop

  15. @daloog #iosdevuk Definition of done

  16. @daloog #iosdevuk Better tools

  17. @daloog #iosdevuk Better result

  18. @daloog #iosdevuk Art Engineering UI - ?

  19. @daloog #iosdevuk Art Engineering UI

  20. @daloog #iosdevuk UI is the hardest CS problem

  21. @daloog #iosdevuk

  22. @daloog #iosdevuk

  23. @daloog #iosdevuk

  24. @daloog #iosdevuk

  25. @daloog #iosdevuk

  26. @daloog #iosdevuk

  27. @daloog #iosdevuk Zero* dependency** rule*** * - not actually zero

    ** - internal is ok *** - not a rule at all
  28. @daloog #iosdevuk TDD?

  29. @daloog #iosdevuk

  30. @daloog #iosdevuk Singletons

  31. @daloog #iosdevuk Dependency net ViewController Network Database DataModel Application

  32. @daloog #iosdevuk Dependency tree ViewController Network Database DataModel Application View

  33. @daloog #iosdevuk Parent is always responsible for child dependencies

  34. @daloog #iosdevuk Module External dependency

  35. @daloog #iosdevuk Module Internal dependency

  36. @daloog #iosdevuk Module context always should be external

  37. @daloog #iosdevuk Zero dependency UI?

  38. @daloog #iosdevuk Component UI

  39. @daloog #iosdevuk

  40. @daloog #iosdevuk

  41. @daloog #iosdevuk

  42. @daloog #iosdevuk Action

  43. @daloog #iosdevuk https://medium.com/swift-fox/react-native-native-28e37f7de1ae#.x3l8sip38 Native React Native

  44. @daloog #iosdevuk VM == Props

  45. @daloog #iosdevuk MVVM

  46. @daloog #iosdevuk React

  47. @daloog #iosdevuk VM + Dynamic Animations, partial updates, etc.

  48. @daloog #iosdevuk Deposit Time

  49. @daloog #iosdevuk Deposit Time

  50. @daloog #iosdevuk Deposit Time + + - - -

  51. @daloog #iosdevuk State = f(t)

  52. @daloog #iosdevuk Event = ΔState

  53. @daloog #iosdevuk State = ∫Event

  54. @daloog #iosdevuk

  55. @daloog #iosdevuk CQRS Event sourcing

  56. @daloog #iosdevuk

  57. @daloog #iosdevuk Data driven

  58. @daloog #iosdevuk Data driven

  59. @daloog #iosdevuk VM + Complexity Containers, transition

  60. @daloog #iosdevuk https://medium.com/@dan_abramov/smart-and- dumb-components-7ca2f9a7c7d0#.62d4jggzw

  61. @daloog #iosdevuk FriendsList VC Friend VC FriendsList VM Friend VM

  62. @daloog #iosdevuk

  63. @daloog #iosdevuk

  64. @daloog #iosdevuk Shared state

  65. @daloog #iosdevuk http://redux.js.org

  66. @daloog #iosdevuk ReSwift https://github.com/ReSwift/ReSwift

  67. @daloog #iosdevuk P == NP ? dalog@me.com

  68. @daloog #iosdevuk Questions? dalog@me.com