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
Definiendo límites
Search
Francisco Díaz
December 14, 2017
Programming
1
54
Definiendo límites
Presentado en iOS Love en Diciembre, 2017
Francisco Díaz
December 14, 2017
Tweet
Share
More Decks by Francisco Díaz
See All by Francisco Díaz
Working effectively at scale
fdiaz
4
250
I hate public speaking. So why do I keep doing it?
fdiaz
0
69
Si odio hablar en público. ¿Por qué lo sigo haciendo?
fdiaz
2
86
Move fast and keep your code quality
fdiaz
1
310
De qué hablo cuando hablo de trabajo remoto
fdiaz
1
92
Setting Boundaries
fdiaz
1
75
Swift Values
fdiaz
0
56
Sisifo o Cómo empezar de nuevo - y otra vez.
fdiaz
0
62
Other Decks in Programming
See All in Programming
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
1k
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
120
Azure OpenAI Serviceのプロンプトエンジニアリング入門
tomokusaba
3
870
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
140
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
4
380
Code Reviews
bkuhlmann
4
900
Anthropic Cookbook のおすすめレシピ
schroneko
7
1.1k
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
970
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
6
1.2k
Goのエラースタックトレースの歴史と今後
sonatard
10
1.8k
Git Rebase
bkuhlmann
11
1.6k
AmperとFleetを使ったAndroidアプリ
yoppie
0
250
Featured
See All Featured
Designing for humans not robots
tammielis
247
25k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
21
1.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
228
130k
Debugging Ruby Performance
tmm1
70
11k
Designing the Hi-DPI Web
ddemaree
276
33k
Code Review Best Practice
trishagee
56
15k
How to train your dragon (web standard)
notwaldorf
75
5.2k
The Mythical Team-Month
searls
216
42k
Clear Off the Table
cherdarchuk
85
310k
Transcript
DEFINIENDO LIMITES
Francisco Díaz franciscodiaz.cl
None
3 desarrolladores iOS 28 horas 1 projecto
EVA BC programs provide vital support to anti- violence programs
and communities across BC. — Ending Violence Association ONG
None
Features: → Botón de pánico → Today widget → Knock
Botón de pánico: Al presionar el botón → Reportar
Today widget: Al presionar el botón → Reportar
Knock Al golpear el teléfono → Reportar
División de trabajo
Por feature → 1 Dev: Pantalla con botón en iOS
app → 1 Dev: Today widget → 1 Dev: Knock
None
None
None
❌ Una persona por "feature" ✅ Una persona por "capa"
None
Dependencias
Dependency inversion
protocol ReportCreator { func createReport() throws -> Report }
class SuccessReportCreator: ReportCreator { func createReport() throws -> Report {
return Report(id: "1", date: Date()) } } class ErrorReportCreator: ReportCreator { func createReport() throws -> Report { throw ReportCreationError.fakeError } }
class BigPanicButtonViewController: UIViewController { private let reportCreator: ReportCreator init(reportCreator: ReportCreator)
{ self.reportCreator = reportCreator } func didTapBigPanicButton() { do { // Handle Report let report = try reportCreator.createReport() } catch { // Handle error } } }
class BigPanicButtonViewController: UIViewController { init(reportCreator: ReportCreator = SuccessReport()) { ...
} }
¿Si el usuario no tiene internet?
None
None
None
None
protocol APIRequester { func createReport() throws -> JSON } protocol
SMSHandler { func sendSMS() throws -> SMS } protocol ConnectivityListener { var isConnected: Bool { get } }
Nada existe aún, pero podemos probar si funciona
Demo
Recap → Movernos independientemente → Reducir conflictos → No hay
necesidad de esperar para integrar código.
¿Preguntas?