Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Modularizing your iOS apps
Search
Oleksandr Voronov
October 06, 2018
Programming
0
120
Modularizing your iOS apps
CocoaHeads Kyiv #14 Workshop
https://youtu.be/TfOLDo-fp7k
Oleksandr Voronov
October 06, 2018
Tweet
Share
More Decks by Oleksandr Voronov
See All by Oleksandr Voronov
Controllable Randomness in Unit Tests
alexandervoronov
1
37
TDD in Real World
alexandervoronov
1
210
Building CLI with Swift
alexandervoronov
1
310
Stanfy MadCode 10: From Java to Kotlin, from Objective-C to Swift
alexandervoronov
0
220
Alexander Voronov
alexandervoronov
2
1.2k
ReactiveCocoa
alexandervoronov
0
140
Other Decks in Programming
See All in Programming
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
630
知られざるDMMデータエンジニアの生態 〜かつてツチノコと呼ばれし者〜
takaha4k
1
460
AHC041解説
terryu16
0
410
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.4k
令和7年版 あなたが使ってよいフロントエンド機能とは
mugi_uno
10
5.3k
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
130
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
590
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
190
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
1.4k
ErdMap: Thinking about a map for Rails applications
makicamel
1
680
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
150
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
300
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
51
7.3k
Become a Pro
speakerdeck
PRO
26
5.1k
4 Signs Your Business is Dying
shpigford
182
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
19
2.3k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
Being A Developer After 40
akosma
89
590k
Practical Orchestrator
shlominoach
186
10k
Rails Girls Zürich Keynote
gr2m
94
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Building Applications with DynamoDB
mza
93
6.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
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