Расскажу про развитие идеи реактивного программирования. Пройдем путь от MVVM к VIPER при использовании рективщины, обсудим плюсы и минусы последнего в сравнении с императивной реализацией.
Вопросы, возникающие при использовании MVC, и их решение при помощи VIPER.
1. Проблемы, решаемые VIPER-ом. История появления.
2. Структура VIPER-модуля
3. Сервисы
4. Data flow
5. Навигация
6. Вложенные модули
7. Data flow между модулями
8. Кодогенерация. Vipergen
Часто при разработке ios приложения разработчик попадает в ситуацию когда ViewController начинает аккумулировать в себе больше количество бизнес логики. Из-за накапливающегося связанного кода ViewController становится очень трудно поддерживать. Не так давно в мире ios разработки появилось решение - архитектура VIPER. VIPER это способ разбить massive view controllеры, на набор элементов (View, Interactor, Presenter, Entity, Router) с едиными ответственностями, которые так или иначе удовлетворяют принципам SOLID. Такие модули легко тестирвоать, расширять и переиспользовать.
Вебинар рассказывает, как :
- работать с инcтрументом iRidium Script в редакторе iRidium Studio;
- управлять графической частью пользовательского интерфейса через iRidium Script.
Подробнее об iRidium Script здесь http://dev.iridiummobile.net/JS_Guide
Вопросы, возникающие при использовании MVC, и их решение при помощи VIPER.
1. Проблемы, решаемые VIPER-ом. История появления.
2. Структура VIPER-модуля
3. Сервисы
4. Data flow
5. Навигация
6. Вложенные модули
7. Data flow между модулями
8. Кодогенерация. Vipergen
Часто при разработке ios приложения разработчик попадает в ситуацию когда ViewController начинает аккумулировать в себе больше количество бизнес логики. Из-за накапливающегося связанного кода ViewController становится очень трудно поддерживать. Не так давно в мире ios разработки появилось решение - архитектура VIPER. VIPER это способ разбить massive view controllеры, на набор элементов (View, Interactor, Presenter, Entity, Router) с едиными ответственностями, которые так или иначе удовлетворяют принципам SOLID. Такие модули легко тестирвоать, расширять и переиспользовать.
Вебинар рассказывает, как :
- работать с инcтрументом iRidium Script в редакторе iRidium Studio;
- управлять графической частью пользовательского интерфейса через iRidium Script.
Подробнее об iRidium Script здесь http://dev.iridiummobile.net/JS_Guide
Александр Зимин – Анимация как средство самовыраженияCocoaHeads
Расскажу о том, как создавать сложные анимации в iOS приложениях.
- CoreAnimation и его особенности
- Анимационные переходы между экранами
- Работа с анимациями, экспортированными из Adobe After Effects
Николай Ашанин – Team Lead. Структурирование мыслейCocoaHeads
Расскажу, как вырасти из разработчика в тимлида и не сойти с ума. Технические и психологические рекомендации, ошибки, негатив и дельные советы для разработчиков. Будет интересно разработчикам, которые задумываются о росте.
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...CocoaHeads
Я расскажу, как внести функциональные изменения в плохо спроектированный код в разумные сроки и при этом ничего не сломать — о возможных проблемах, ошибках в процессе и о том, как с ними справляться.
В частности, покажу, как в этом помогают тесты и почему они важны как система раннего обнаружения ошибок. Расскажу о зависимостях, их классификации и о том, какое влияние разные типы зависимостей оказывают на наше понимание работы программы и возможности её протестировать.
Большую часть этого доклада я посвятил простым практическим приёмам рефакторинга и модификации кода — для упрощения понимания системы и более лёгкого внесения функциональных изменений.
Самвел Меджлумян — S3: API на Swift за пять минутCocoaHeads
Мы поговорим о том, что может Swift за рамками iOS-разработки и что он из себя представляет в качестве Server Side решения. Изучим готовые продукты для реализации сервера на Swift и сравним их между собой. Будет также короткое демо, как за пять минут поднять API на Swift.
Александр Зимин (Alexander Zimin) — Магия SwiftCocoaHeads
Александр говорил о нестандартных особенностях языка для реальных проектов. О том, зачем усложнять себе жизнь и какие преимущества это может дать.
- Protocol-Oriented Programming и его дилеммы
- Когда и зачем использовать обобщения и вложенные типы
- Настоящее и будущее Swift
Катерина Трофименко — Разработка фич: от флагов до a/b-тестовCocoaHeads
Катя рассказала, что такое feature flags, как они помогают нам в Badoo разрабатывать большие фичи итерационно, силами нескольких разработчиков, и не переживать из-за кода, уходящего в релизы. Рассказала о том, как система таргетированной раскладки фич переросла в систему a/b-тестирования и как все это выглядит со стороны iOS-клиента
Андрей Володин — Как подружиться с роботомCocoaHeads
This document provides instructions for building a "hello world" application and the Fiber2D framework for Android using Swift. It outlines setting up the necessary prerequisites like the Android NDK. It then describes compiling a simple "hello world" executable to test the setup. The bulk of the document focuses on compiling the Fiber2D 3D graphics framework, which involves creating a build script to configure the Swift compiler, link dependencies, and build a dynamic library that can be used in an Android application.
Александр Зимин (Alexander Zimin) — UIViewController, откройся!CocoaHeads
The document discusses iOS app development topics including UIKit, transitions, animations, view controllers, and protocols. It provides information about modal presentation styles in UIModalPresentationStyle, transition coordinators using the UIViewControllerTransitioningDelegate protocol, and animating view controller changes using the UIViewControllerContextTransitioning protocol. The document outlines responsibilities for animating transitions between views.
Сергей Пронин, Никита Кошолкин — Как мы разрабатываем App in the Air: процесс...CocoaHeads
An app called App in the Air grew from 0 to 1,000,000 users. The document outlines lessons learned from the experience including that launch is just the beginning, retention matters more than initial buzz or downloads, and gatekeepers, team composition, industry, feedback loops, thinking big, and vision are important factors for long term growth. It provides data on the app's user growth and retention over time from launch to 1 million users.
Макс Грибов — Использование SpriteKit в неигровых приложенияхCocoaHeads
This document discusses using SpriteKit, Apple's 2D game framework, for non-game applications. It introduces SpriteKit components like SKView, SKScene and SKNode that can be used to build interactive visual experiences. It also covers SpriteKit actions for animation, physics integration, and organizing visual hierarchies with nodes.
Александр Зимин – Анимация как средство самовыраженияCocoaHeads
Расскажу о том, как создавать сложные анимации в iOS приложениях.
- CoreAnimation и его особенности
- Анимационные переходы между экранами
- Работа с анимациями, экспортированными из Adobe After Effects
Николай Ашанин – Team Lead. Структурирование мыслейCocoaHeads
Расскажу, как вырасти из разработчика в тимлида и не сойти с ума. Технические и психологические рекомендации, ошибки, негатив и дельные советы для разработчиков. Будет интересно разработчикам, которые задумываются о росте.
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...CocoaHeads
Я расскажу, как внести функциональные изменения в плохо спроектированный код в разумные сроки и при этом ничего не сломать — о возможных проблемах, ошибках в процессе и о том, как с ними справляться.
В частности, покажу, как в этом помогают тесты и почему они важны как система раннего обнаружения ошибок. Расскажу о зависимостях, их классификации и о том, какое влияние разные типы зависимостей оказывают на наше понимание работы программы и возможности её протестировать.
Большую часть этого доклада я посвятил простым практическим приёмам рефакторинга и модификации кода — для упрощения понимания системы и более лёгкого внесения функциональных изменений.
Самвел Меджлумян — S3: API на Swift за пять минутCocoaHeads
Мы поговорим о том, что может Swift за рамками iOS-разработки и что он из себя представляет в качестве Server Side решения. Изучим готовые продукты для реализации сервера на Swift и сравним их между собой. Будет также короткое демо, как за пять минут поднять API на Swift.
Александр Зимин (Alexander Zimin) — Магия SwiftCocoaHeads
Александр говорил о нестандартных особенностях языка для реальных проектов. О том, зачем усложнять себе жизнь и какие преимущества это может дать.
- Protocol-Oriented Programming и его дилеммы
- Когда и зачем использовать обобщения и вложенные типы
- Настоящее и будущее Swift
Катерина Трофименко — Разработка фич: от флагов до a/b-тестовCocoaHeads
Катя рассказала, что такое feature flags, как они помогают нам в Badoo разрабатывать большие фичи итерационно, силами нескольких разработчиков, и не переживать из-за кода, уходящего в релизы. Рассказала о том, как система таргетированной раскладки фич переросла в систему a/b-тестирования и как все это выглядит со стороны iOS-клиента
Андрей Володин — Как подружиться с роботомCocoaHeads
This document provides instructions for building a "hello world" application and the Fiber2D framework for Android using Swift. It outlines setting up the necessary prerequisites like the Android NDK. It then describes compiling a simple "hello world" executable to test the setup. The bulk of the document focuses on compiling the Fiber2D 3D graphics framework, which involves creating a build script to configure the Swift compiler, link dependencies, and build a dynamic library that can be used in an Android application.
Александр Зимин (Alexander Zimin) — UIViewController, откройся!CocoaHeads
The document discusses iOS app development topics including UIKit, transitions, animations, view controllers, and protocols. It provides information about modal presentation styles in UIModalPresentationStyle, transition coordinators using the UIViewControllerTransitioningDelegate protocol, and animating view controller changes using the UIViewControllerContextTransitioning protocol. The document outlines responsibilities for animating transitions between views.
Сергей Пронин, Никита Кошолкин — Как мы разрабатываем App in the Air: процесс...CocoaHeads
An app called App in the Air grew from 0 to 1,000,000 users. The document outlines lessons learned from the experience including that launch is just the beginning, retention matters more than initial buzz or downloads, and gatekeepers, team composition, industry, feedback loops, thinking big, and vision are important factors for long term growth. It provides data on the app's user growth and retention over time from launch to 1 million users.
Макс Грибов — Использование SpriteKit в неигровых приложенияхCocoaHeads
This document discusses using SpriteKit, Apple's 2D game framework, for non-game applications. It introduces SpriteKit components like SKView, SKScene and SKNode that can be used to build interactive visual experiences. It also covers SpriteKit actions for animation, physics integration, and organizing visual hierarchies with nodes.
3. VIPER
Interactor Presenter View
Router
Показывает информацию
пользователю
и переадресует презентеру
действия пользователя
Управляет
вью-контроллером
Общается с сервером
и базой данных
Отвечает за переходы
между экранами
Entity
Entity
Entity
2
8. Сигналы в RxSwift
var scrollPosition: Observable<CGPoint> = ...
scrollPosition.subscribe(onNext: { point in
print("User scrolled to (point).")
})
7
9. Плюсы сигналов
var tableView: UITableView
1. Скролл-вью не знает ни про каких делегатов.
2. Никаких протоколов.
3. Сигнал можно переиспользовать
в нескольких местах.
tableView.delegate = self
extension OffersViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
processScrolling(scrollView.offset)
}
}
let scrollPosition = tableView.rx.contentOffset
scrollPosition.subscribe(onNext: { offset in
self.processScrolling(offset)
})
8
13. Реактивный интерактор
Interactor Presenter View
InteractorInput ViewProtocolInteractorOutput
· output · view
· interactor
InteractorProtocol
1. Ещё меньше протоколов.
2. Вью и интерактор ничего не знают про презентер.
12