NEW PRODUCTS
With similar core needs
BECAUSE YOU WANT TO REUSE CODE, RIGHT?
Slide 51
Slide 51 text
NEW PRODUCTS
With similar core needs
BECAUSE YOU WANT TO REUSE CODE, RIGHT?
Slide 52
Slide 52 text
OPEN SOURCE
And benefit from the community
BUILD PIECES OF CODE THAT YOU'D BE PROUD OF OPEN SOURCING
Slide 53
Slide 53 text
SPECIALIZED TEAMS
From UI lovers to Core Data experts
(CLEARLY DEFINED TEAM BOUNDARIES)
Slide 54
Slide 54 text
SPECIALIZED TEAMS
From UI lovers to Core Data experts
(CLEARLY DEFINED TEAM BOUNDARIES)
Slide 55
Slide 55 text
HOW TO? !
There are multiple options
(I'LL SHOW YOU SOME)
Slide 56
Slide 56 text
CocoaPods
Slide 57
Slide 57 text
CocoaPods
▸ ✅ Easy setup (each Framework .podspec)
▸ ✅ Same setup for local/external dependencies
▸ ❌ It sucks if you don't version
▸ ❌ Fully frameworks approach (load time)
Slide 58
Slide 58 text
Manual
▸ ✅ More control over the workspace
▸ ✅ Custom setup (you design it)
▸ ❌ Cumbersome setup (Build Settings)
External dependencies can be checked out with Carthage/Git
Submodules
1. Keep it in the same repository (fast iterations)
2. Move it once it consolidates (sporadic changes)
3. Then version it! (snapshots in time)
Slide 66
Slide 66 text
EXTERNAL DEPENDENCIES?
HOW TO FETCH THEM?
Slide 67
Slide 67 text
▸ If CocoaPods for local: Use it also for external
▸ If manual setup: Use Carthage or Git Submodules
Slide 68
Slide 68 text
STATIC OR DYNAMIC?
!
Slide 69
Slide 69 text
▸ Objective-C & not shared - Static
▸ Objective-C && shared - Dynamic
▸ Swift - Dynamic
Slide 70
Slide 70 text
HOW MANY DYNAMIC
FRAMEWORKS?
THE MORE, THE WORSE LOADING TIME
WILL ! IMPROVE IT? "
Slide 71
Slide 71 text
▸ No more than 6 - (WWDC2016:406)
▸ Group dependencies in Framework (Manual setup)
Testing.framework
Quick.{swift,h,m}
Nimble.{swift,h,m}
OHHTTPStubs.{swift,h,m}
Core.framework
RxSwift{.swift}
Slide 72
Slide 72 text
DOWNSIDES !
Slide 73
Slide 73 text
LACK OF DOCUMENTATION
(TARGETS CONFIGURATION)
Tip: Use CocoaPods and copy the configuration
Slide 74
Slide 74 text
STORYBOARDS/XIBS IN
FRAMEWORKS
Sucks !
TIP: KEEP THEM IN THE APPLICATION TARGET
Slide 75
Slide 75 text
FRAMEWORKS CODE
RECOGNITION
Sucks even more !
Slide 76
Slide 76 text
SOME EXTERNAL
DEPENDENCIES
ARE DISTRIBUTED AS PLATFORM BINARIES