Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Дмитрий Кулижников

Реактивные грабли

  • Inicia sesión para ver los comentarios

  • Sé el primero en recomendar esto

Дмитрий Кулижников

  1. 1. Реактивные грабли Дмитрий Кулижников Руководитель группы разработки 2ГИС
  2. 2. 2 0:04 -3:58 Two Weeks FKA Twigs – LP1 42%Sketch 9:41 AM
  3. 3. 3
  4. 4. 4 ReactiveCocoa RxJava Rx.NET
  5. 5. Грабли одни и те же 5
  6. 6. Сигнал 6 2 3 5 7
  7. 7. 7 A CancelA Идея реактивного подхода
  8. 8. Идея реактивного подхода 8 A CancelAr Ar
  9. 9. Идея реактивного подхода 9 A CancelArt Ar Art
  10. 10. Идея реактивного подхода 10 A CancelArte Ar Art Arte
  11. 11. Идея реактивного подхода 11 CancelArtem A Ar Art Arte Artem
  12. 12. 12 Cancel Apple Artem Artur A textSignal contactsSignal
  13. 13. 13 A Ar Art Arte Artem map (name -> findContacts(name)) Apple, Artem, Artur Artem, Artur Artem Artem, Artur Artem distinctUntilChanged Apple, Artem, Artur Artem, Artur Artem
  14. 14. Преимущества 14 • Унификация обработки событий
  15. 15. Преимущества 15 • Унификация обработки событий • Создание новых сигналов на основе существующих
  16. 16. Где грабли? 16
  17. 17. Жизненный цикл 17
  18. 18. 18 1 1 3 7 7 1 1 3 7 7 1 1 3 7 7 error completed
  19. 19. takeUntil:willDeallocSignal YES NO YES subscribeNext apiRequest(…) 19 YES NO YES NO dealloc()
  20. 20. Жизненный цикл 20 • Риск выжрать весь трафик пользователя • Деградация производительности
  21. 21. Hot & Cold 21
  22. 22. Cold 22 1 3 42 5 subscribeNext 1 2 3 subscribeNext 4 15 2 3 4 5
  23. 23. Hot 23 A Art ArteAr Artem subscribeNext Arte Artem
  24. 24. cache:1 24 A Art ArteAr Artem subscribeNext Arte ArtemArt
  25. 25. Multicast connection 25 publish 1 3 7 subscribeNext, subscribeNext connect
  26. 26. Hot & Cold 26 • Риск выжрать весь трафик пользователя • Деградация производительности
  27. 27. Документация и исходники 27
  28. 28. 28 1 2 7 3 toArray [1, 2, 7, 3] completed
  29. 29. 1 3 7 29 distinctUntilChanged 1 1 3 7 7
  30. 30. 30 1 delay:5 take:1 1 1
  31. 31. 31 1 2 7 3 A B 2A 7A 7B 3B combineLatest
  32. 32. Документация и исходники 32 • Риск потерять дни в дебаггере и гугле • Использование дополнительной памяти
  33. 33. Архитектура 33
  34. 34. Subject • Сигнал 34
  35. 35. Subject • Сигнал • Связывает императивный код с реактивным 35
  36. 36. Subject • Сигнал • Связывает императивный код с реактивным • Обладает публичными методами • sendNext • sendError • sendCompleted 36
  37. 37. Subject • Subject торчит наружу в публичном интерфейсе 37
  38. 38. Subject • Subject торчит наружу в публичном интерфейсе • Подписка на Subject внутри императивного кода 38
  39. 39. Реактивщина не для всего 39
  40. 40. 40 0:04 -3:58 Two Weeks FKA Twigs – LP1 42%Sketch 9:41 AM 0:04 -3:58 Two Weeks FKA Twigs – LP1 42%Sketch 9:41 AM
  41. 41. Заключение • Разберитесь с идеей реактивщины до ее использования 41
  42. 42. Заключение • Разберитесь с идеей реактивщины до ее использования • Читайте документацию и исходники 42
  43. 43. Заключение • Разберитесь с идеей реактивщины до ее использования • Читайте документацию и исходники • Не используйте реактивный подход везде подряд 43
  44. 44. Заключение • Разберитесь с идеей реактивщины до ее использования • Читайте документацию и исходники • Не используйте реактивный подход везде подряд • Будьте реактивнее 44
  45. 45. @renascence Дмитрий Кулижников Руководитель группы разработки 2ГИС Вопросы? kulizhnikov@gmail.com 45

×