Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Definiendo límites
Francisco Díaz
December 14, 2017
Programming
1
30
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
200
I hate public speaking. So why do I keep doing it?
fdiaz
0
42
Si odio hablar en público. ¿Por qué lo sigo haciendo?
fdiaz
2
59
Move fast and keep your code quality
fdiaz
1
260
De qué hablo cuando hablo de trabajo remoto
fdiaz
1
44
Setting Boundaries
fdiaz
1
54
Swift Values
fdiaz
0
36
Sisifo o Cómo empezar de nuevo - y otra vez.
fdiaz
0
45
Other Decks in Programming
See All in Programming
Cybozu GoogleI/O 2022 LT会 - Input for all screens
jaewgwon
0
320
オブジェクト指向で挫折する初学者へ
deepoil
0
160
Meet Swift Regex
usamik26
0
350
Angular-basierte Micro Frontends mit Module Federation @API Summit
manfredsteyer
PRO
0
110
What's new in Android development tools まとめ
mkeeda
0
330
開発速度を5倍早くするVSCodeの拡張機能を作った
purp1eeeee
2
150
プロダクトのタイプ別 GraphQL クライアントの選び方
shozawa
0
4.3k
io22 extended What's new in app performance
veronikapj
0
340
IE Graduation (IE の功績を讃える)
jxck
20
12k
Mobile Product Engineering
championswimmer
0
300
Java アプリとAWS の良い関係 - AWS でJava アプリを実行する一番簡単な方法教えます / AWS for Javarista
kanamasa
2
1.2k
即、New Relic / New Relic NOW!
uzulla
0
330
Featured
See All Featured
Practical Orchestrator
shlominoach
178
8.6k
The Language of Interfaces
destraynor
148
20k
Side Projects
sachag
450
37k
Support Driven Design
roundedbygravity
86
8.5k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
Rebuilding a faster, lazier Slack
samanthasiow
62
7.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
337
17k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
Put a Button on it: Removing Barriers to Going Fast.
kastner
56
2.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
238
11k
GraphQLの誤解/rethinking-graphql
sonatard
28
6.6k
Pencils Down: Stop Designing & Start Developing
hursman
112
9.8k
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?