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
93
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
30
TDD in Real World
alexandervoronov
1
200
Building CLI with Swift
alexandervoronov
1
310
Stanfy MadCode 10: From Java to Kotlin, from Objective-C to Swift
alexandervoronov
0
200
Alexander Voronov
alexandervoronov
2
1.2k
ReactiveCocoa
alexandervoronov
0
120
Other Decks in Programming
See All in Programming
VSCodeでのDatabricks開発もお勧めしたい/I would also recommend Databricks development with VSCode.
kazumain
0
230
今、知っておきたい! 生成AIエージェントの世界
elith
3
340
Doctrine ORMでValue Objectを扱う方法4選 #phpstudy / 4 ways to handle Value Objects with Doctrine ORM
77web
4
110
Zero Waste, Radical Magic, and Italian Graft – Quarkus Efficiency Secrets
hollycummins
0
210
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
480
本格ローグライク制作にEbitengineを選んでみた
nagainaganawa
0
290
HUIT新歓2024「競技プログラミング、やってみませんか?」
slephy2784
1
250
Elm 0.19.0 Changes
bkuhlmann
0
480
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Model Design
suzushin54
2
2.1k
品質とスピードを両立: TypeScriptの柔軟な型システムをバックエンドで活用する
kosui
8
2.2k
データアナリストが行うDatabricksを活用したETLの自動化事例
shinoa
0
250
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
5
4.6k
Featured
See All Featured
Debugging Ruby Performance
tmm1
69
11k
Git: the NoSQL Database
bkeepers
PRO
421
63k
Raft: Consensus for Rubyists
vanstee
131
6.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
15
1.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
225
51k
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
Navigating Team Friction
lara
177
13k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
153
14k
Side Projects
sachag
451
41k
The Pragmatic Product Professional
lauravandoore
24
5.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
115
18k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
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