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

Modularizing your iOS apps

Modularizing your iOS apps

CocoaHeads Kyiv #14 Workshop

D94c9a683d3b45cfe42548cd5a1a39b0?s=128

Alexander Voronov

October 06, 2018
Tweet

Transcript

  1. MODULARIZING YOUR IOS APPS WORKSHOP @aleks_voronov • CocoaHeadsKyiv#14

  2. AGENDA @aleks_voronov • CocoaHeadsKyiv#14

  3. REASONS @aleks_voronov • CocoaHeadsKyiv#14

  4. TARGET TEAMS @aleks_voronov • CocoaHeadsKyiv#14

  5. QUICKLY INTRODUCE NEW TEAM MEMBERS !" @aleks_voronov • CocoaHeadsKyiv#14

  6. INDEPENDENT FEATURES @aleks_voronov • CocoaHeadsKyiv#14

  7. COMPLEX CONTEXT @aleks_voronov • CocoaHeadsKyiv#14

  8. REUSABLE COMPONENTS @aleks_voronov • CocoaHeadsKyiv#14

  9. COMPILATION TIME* * Analyze your code first: -Xfrontend -warn-long-expression-type-checking=200 @aleks_voronov

    • CocoaHeadsKyiv#14
  10. ! BENEFITS @aleks_voronov • CocoaHeadsKyiv#14

  11. YOUR TEAM – YOUR RULES ▸ Own processes ▸ Own

    development flow ▸ Less merge conflicts ▸ Only your changes @aleks_voronov • CocoaHeadsKyiv#14
  12. SMALLER FEEDBACK CYCLE ⏱ @aleks_voronov • CocoaHeadsKyiv#14

  13. EASIER TO TEST @aleks_voronov • CocoaHeadsKyiv#14

  14. EASIER TO REASON ABOUT @aleks_voronov • CocoaHeadsKyiv#14

  15. EASIER TO INTEGRATE IN DIFFERENT ENVIRONMENT @aleks_voronov • CocoaHeadsKyiv#14

  16. ! EXPERIMENTING ▸ Language ▸ System Design ▸ Technologies @aleks_voronov

    • CocoaHeadsKyiv#14
  17. DRAWBACKS @aleks_voronov • CocoaHeadsKyiv#14

  18. INTEGRATIONS @aleks_voronov • CocoaHeadsKyiv#14

  19. LESS INVOLVEMENT IN OTHER MODULES ! " @aleks_voronov • CocoaHeadsKyiv#14

  20. HOT-PATCHING @aleks_voronov • CocoaHeadsKyiv#14

  21. RESOURCES MANAGEMENT @aleks_voronov • CocoaHeadsKyiv#14

  22. TIPS & TRICKS @aleks_voronov • CocoaHeadsKyiv#14

  23. ! WHERE TO START? ▸ Non Vital ▸ Least Dependent

    (Analytics, Logging, Utils, Networking) ▸ Just Copy-Paste ▸ Gradually Integrate alongside Original Implementation ▸ Deprecating vs Removing @aleks_voronov • CocoaHeadsKyiv#14
  24. WALKING SKELETON FIRST ☠ @aleks_voronov • CocoaHeadsKyiv#14

  25. SLOWLY INTRODUCE IT TO YOUR TEAM @aleks_voronov • CocoaHeadsKyiv#14

  26. LOCAL ⚔ REPO @aleks_voronov • CocoaHeadsKyiv#14

  27. VERSIONING @aleks_voronov • CocoaHeadsKyiv#14

  28. CODE REVIEW @aleks_voronov • CocoaHeadsKyiv#14

  29. S O L I D ▸ Private / Internal by

    Default ▸ Add / Open things ONLY when needed ▸ Composition vs Inheritance ▸ Invert Dependencies ▸ Extending vs Changing @aleks_voronov • CocoaHeadsKyiv#14
  30. @aleks_voronov • CocoaHeadsKyiv#14

  31. TOOLKIT @aleks_voronov • CocoaHeadsKyiv#14

  32. GIT SUBMODULES @aleks_voronov • CocoaHeadsKyiv#14

  33. SWIFT PACKAGE MANAGER @aleks_voronov • CocoaHeadsKyiv#14

  34. CARTHAGE @aleks_voronov • CocoaHeadsKyiv#14

  35. COCOAPODS @aleks_voronov • CocoaHeadsKyiv#14

  36. ! MONOLITH? @aleks_voronov • CocoaHeadsKyiv#14

  37. SMALL PROJECT @aleks_voronov • CocoaHeadsKyiv#14

  38. SMALL FEATURE ... @aleks_voronov • CocoaHeadsKyiv#14

  39. SMALL FEATURE NOT REUSABLE UTILITY @aleks_voronov • CocoaHeadsKyiv#14

  40. FEATURE & PROJECT ARE TIGHTLY COUPLED ! @aleks_voronov • CocoaHeadsKyiv#14

  41. FEATURE STAGE DEVELOPMENT → SUPPORTING ! @aleks_voronov • CocoaHeadsKyiv#14

  42. YOU’RE A SMALL STARTUP IN ITS EARLY STAGE @aleks_voronov •

    CocoaHeadsKyiv#14
  43. LET'S CODE! GITHUB.COM/COCOAHEADS-KYIV-14-WORKSHOP @aleks_voronov • CocoaHeadsKyiv#14

  44. THANKS! @ALEKS_VORONOV @aleks_voronov • CocoaHeadsKyiv#14