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

More VIPER, Baby

More VIPER, Baby

Talking about iOS VIPER and Clean Architecture history, real usage, options, and best practices.
#oleksiiholub #svitlasmarttalk #iosdevelopment #iosmeetup
Oleksii Holub (Ukraine, Kyiv) works as a Mobile Architect and Team Lead. In this speech, he talks about how to use VIPER architecture in iOS application development.
"Svitla Smart Talk, iOS" meetup was held on 23.06.2020 in Zoom.
Announce: https://dou.ua/calendar/32844/
Main part: https://www.youtube.com/watch?v=zwL-lUrgVm4
Q&A part: https://www.youtube.com/watch?v=Vi4zaPiKo0Q

Avatar for Oleksii Holub

Oleksii Holub

June 23, 2020
Tweet

More Decks by Oleksii Holub

Other Decks in Programming

Transcript

  1. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  2. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  3. TESTS ARE EVERYWHERE! interface internals worker class worker class YourViewController

    covered with unit tests covered with unit tests private de fi nitions covered with unit tests
  4. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  5. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  6. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  7. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  8. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET JOHN REID
 
 Test Driven Development for iOS
  9. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  10. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  11. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  12. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  13. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  14. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  15. WHY VIPER - SEPARATION OF CONCERNS - HIGHEST POSSIBLE TESTABILITY

    - HIGHEST POSSIBLE ABSTRACTION - SOLID COMPLIANT - EASY TO MIX WITH EVERYTHING ELSE - BEST CHOICE FOR TDD - IMPROVES OOP THROUGH TESTS - BEST FOR REFACTORING - BEST OF ALL ON THE MARKET
  16. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  17. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  18. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  19. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  20. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  21. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  22. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  23. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  24. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  25. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  26. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  27. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  28. • THAT’S NEITHER A KISS NOR DRY! • TIGHT INTEGRATION

    IN THE PROJECT • THE STORYBOARD BECOMES AN ISSUE • VIEWCONTROLLER IS STILL THERE • BOILERPLATE CODE • A LOT OF ABSOLUTELY IDENTICAL ROUTERS (AND PRESENTERS) • IN THE FAST CHANGING STARTUP ENVIRONMENT YOU’LL HAVE TO REWRITE A LOT OF STUFF • DEFINITELY NOT THE BEST CHOICE FOR NEITHER POC NOR MVP • IF YOU DON’T CARE ABOUT UNIT TESTS - FORGET IT • YOUR JUNIOR DEVELOPERS WILL STRUGGLE CONS
  29. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  30. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  31. IT’S STILL FAR FROM IDEAL NO WAY TO GET RID

    OF VIEWCONTROLLER SPECIFICALLY ON IOS PLATFORM
  32. AGENDA 1. WHICH PROBLEM VIPER SOLVES 2. CLEAN ARCHITECTURE.THE BEGINNING

    3. WHY VIPER, WHAT THE HELL IS MVP 4. AVAILABLE OPTIONS 5. CONS 6. COOKING IT IN AN EFFICIENT WAY! 7. IT’S STILL FAR FROM IDEAL 8. HOW TO NOT SCREW IT 9. Q&A
  33. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  34. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  35. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  36. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  37. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  38. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  39. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  40. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  41. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  42. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  43. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT
  44. • OOP AND SOLID IS THE BOSS • PRESENTER PRESENTS,

    DEFINE WHAT “PRESENTS” MEANS • WRITE UNIT TESTS • SEPARATE BUSINESS AND UI LOGIC • DON’T TRY TO USE COORDINATOR INSTEAD OF ROUTERS • DO UI LOGIC IN VIEWCONTROLLER • TRY TO FIND WORST VIPER IMPLEMENTATION • ALWAYS USE COMMON SENSE • SPEND SOME TIME WITH UNCLE BOB’S BOOK • USE UNIFIED METHOD TO IMPLEMENT WIREFRAME • GIVE A TIME TO YOUR JUNIORS HOW TO NOT SCREW IT