Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Modularizing your iOS apps
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Oleksandr Voronov
October 06, 2018
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Modularizing your iOS apps
CocoaHeads Kyiv #14 Workshop
https://youtu.be/TfOLDo-fp7k
Oleksandr Voronov
October 06, 2018
More Decks by Oleksandr Voronov
See All by Oleksandr Voronov
Controllable Randomness in Unit Tests
alexandervoronov
1
87
TDD in Real World
alexandervoronov
1
290
Building CLI with Swift
alexandervoronov
1
350
Stanfy MadCode 10: From Java to Kotlin, from Objective-C to Swift
alexandervoronov
0
270
Alexander Voronov
alexandervoronov
2
1.2k
ReactiveCocoa
alexandervoronov
0
200
Other Decks in Programming
See All in Programming
パスワード再設定メールのURLについて知っておこう
uyuki234
0
170
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.2k
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
140
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Next.js: The final boss of Web Performance
guaca
0
310
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
1
160
Domain-Driven Transformation
hschwentner
2
2.3k
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
140
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
190
ChromeでローカルLLM
ryu1013
0
160
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
The untapped power of vector embeddings
frankvandijk
2
1.9k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
600
Done Done
chrislema
187
17k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Designing for Timeless Needs
cassininazir
1
530
Typedesign – Prime Four
hannesfritz
42
3.2k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
310
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Transcript
MODULARIZING YOUR IOS APPS WORKSHOP @aleks_voronov • CocoaHeadsKyiv#14
AGENDA @aleks_voronov • CocoaHeadsKyiv#14
REASONS @aleks_voronov • CocoaHeadsKyiv#14
TARGET TEAMS @aleks_voronov • CocoaHeadsKyiv#14
QUICKLY INTRODUCE NEW TEAM MEMBERS !" @aleks_voronov • CocoaHeadsKyiv#14
INDEPENDENT FEATURES @aleks_voronov • CocoaHeadsKyiv#14
COMPLEX CONTEXT @aleks_voronov • CocoaHeadsKyiv#14
REUSABLE COMPONENTS @aleks_voronov • CocoaHeadsKyiv#14
COMPILATION TIME* * Analyze your code first: -Xfrontend -warn-long-expression-type-checking=200 @aleks_voronov
• CocoaHeadsKyiv#14
! BENEFITS @aleks_voronov • CocoaHeadsKyiv#14
YOUR TEAM – YOUR RULES ▸ Own processes ▸ Own
development flow ▸ Less merge conflicts ▸ Only your changes @aleks_voronov • CocoaHeadsKyiv#14
SMALLER FEEDBACK CYCLE ⏱ @aleks_voronov • CocoaHeadsKyiv#14
EASIER TO TEST @aleks_voronov • CocoaHeadsKyiv#14
EASIER TO REASON ABOUT @aleks_voronov • CocoaHeadsKyiv#14
EASIER TO INTEGRATE IN DIFFERENT ENVIRONMENT @aleks_voronov • CocoaHeadsKyiv#14
! EXPERIMENTING ▸ Language ▸ System Design ▸ Technologies @aleks_voronov
• CocoaHeadsKyiv#14
DRAWBACKS @aleks_voronov • CocoaHeadsKyiv#14
INTEGRATIONS @aleks_voronov • CocoaHeadsKyiv#14
LESS INVOLVEMENT IN OTHER MODULES ! " @aleks_voronov • CocoaHeadsKyiv#14
HOT-PATCHING @aleks_voronov • CocoaHeadsKyiv#14
RESOURCES MANAGEMENT @aleks_voronov • CocoaHeadsKyiv#14
TIPS & TRICKS @aleks_voronov • CocoaHeadsKyiv#14
! 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
WALKING SKELETON FIRST ☠ @aleks_voronov • CocoaHeadsKyiv#14
SLOWLY INTRODUCE IT TO YOUR TEAM @aleks_voronov • CocoaHeadsKyiv#14
LOCAL ⚔ REPO @aleks_voronov • CocoaHeadsKyiv#14
VERSIONING @aleks_voronov • CocoaHeadsKyiv#14
CODE REVIEW @aleks_voronov • CocoaHeadsKyiv#14
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
@aleks_voronov • CocoaHeadsKyiv#14
TOOLKIT @aleks_voronov • CocoaHeadsKyiv#14
GIT SUBMODULES @aleks_voronov • CocoaHeadsKyiv#14
SWIFT PACKAGE MANAGER @aleks_voronov • CocoaHeadsKyiv#14
CARTHAGE @aleks_voronov • CocoaHeadsKyiv#14
COCOAPODS @aleks_voronov • CocoaHeadsKyiv#14
! MONOLITH? @aleks_voronov • CocoaHeadsKyiv#14
SMALL PROJECT @aleks_voronov • CocoaHeadsKyiv#14
SMALL FEATURE ... @aleks_voronov • CocoaHeadsKyiv#14
SMALL FEATURE NOT REUSABLE UTILITY @aleks_voronov • CocoaHeadsKyiv#14
FEATURE & PROJECT ARE TIGHTLY COUPLED ! @aleks_voronov • CocoaHeadsKyiv#14
FEATURE STAGE DEVELOPMENT → SUPPORTING ! @aleks_voronov • CocoaHeadsKyiv#14
YOU’RE A SMALL STARTUP IN ITS EARLY STAGE @aleks_voronov •
CocoaHeadsKyiv#14
LET'S CODE! GITHUB.COM/COCOAHEADS-KYIV-14-WORKSHOP @aleks_voronov • CocoaHeadsKyiv#14
THANKS! @ALEKS_VORONOV @aleks_voronov • CocoaHeadsKyiv#14