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
iOS Antipatterns - TDC 2014
Search
hannelita
August 08, 2014
Technology
0
85
iOS Antipatterns - TDC 2014
TDC 2014 - Sao Paulo
hannelita
August 08, 2014
Tweet
Share
More Decks by hannelita
See All by hannelita
Java EE 8 - Future, Wishes and Predictions
hannelita
1
200
JVM Internals Demystified
hannelita
0
350
Eletrônica
hannelita
0
170
Cassandra Meetup
hannelita
0
56
Our Daily Graphs written in Ruby and Neo4j
hannelita
1
170
Wildfly em alta disponibilidade
hannelita
0
240
Helios - o backend pra Mobile que você precisava <3
hannelita
0
110
Neo4j - Dia a dia com grafos, Neo4j e Ruby
hannelita
1
140
Swift - uma fama repentina
hannelita
1
140
Other Decks in Technology
See All in Technology
✨敗北解法コレクション✨〜Expertだった頃に足りなかった知識と技術〜
nanachi
1
690
JAWS AI/ML #30 AI コーディング IDE "Kiro" を触ってみよう
inariku
3
360
Kiroでインフラ要件定義~テスト を実施してみた
nagisa53
3
350
Claude Codeから我々が学ぶべきこと
oikon48
10
2.8k
Telemetry APIから学ぶGoogle Cloud ObservabilityとOpenTelemetryの現在 / getting-started-telemetry-api-with-google-cloud
k6s4i53rx
0
140
Lambda management with ecspresso and Terraform
ijin
2
160
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
6.3k
Claude CodeでKiroの仕様駆動開発を実現させるには...
gotalab555
3
1k
OPENLOGI Company Profile for engineer
hr01
1
38k
【新卒研修資料】数理最適化 / Mathematical Optimization
brainpadpr
27
13k
LLMをツールからプラットフォームへ〜Ai Workforceの戦略〜 #BetAIDay
layerx
PRO
1
980
開発 × 生成AI × コミュニケーション:GENDAの開発現場で感じたコミュニケーションの変化 / GENDA Tech Talk #1
genda
0
190
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
880
Agile that works and the tools we love
rasmusluckow
329
21k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Site-Speed That Sticks
csswizardry
10
760
GitHub's CSS Performance
jonrohan
1031
460k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
RailsConf 2023
tenderlove
30
1.2k
Navigating Team Friction
lara
188
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
Transcript
iOS Antipatterns Tudo que você deveria fazer no seu código,
só que não.
Oi! • Hanneli (‘H' mudo) • CodeMiner 42 • Café,
Pokémon, Lego e bichos <3 HIRING
O que é um código ‘ruim'?
Por que escrevemos código ruim?
O que vamos ver aqui • Paradigma de programação -
sua importância • Princípios de OO que colaboram para um código ‘não ruim’ • Antipatternizando patterns • OSS - exemplos de antipatterns • GIFs engraçados (ou não)
O que *Não* vamos ver aqui • Aula chata de
OO • Introdução a Objective C / iOS / etc • Design Patterns • Aula sobre SOLID
Paradigma == modelo; padrão Toda vez que você padroniza algo,
você facilita na identificação e na produção
Orientação a Objetos == paradigma O que é OO? Herança
Polimorfismo Encapsulamento
O que é OO? “Passar Mensagem.”
OO para Objective C?
Colocando ordem na ‘troca de mensagens' SOLID
“Mantenha suas classes pequenas" Xiita de código bonito, 2014 https://github.com/robbiehanson/XMPPFramework/blob/
master/Core/XMPPStream.m
None
“1 classe, 1 responsabilidade” Xiita de código bonito, 2014 S
O L I D ingle Responsibility
Como melhorar? S O L I D ingle Responsibility •
Separar o controle dos bytes em outra classe • Separar o controle dos Events em outra classe • Separar a autenticação (!!11!!!)
“Cuidado com a herança" Xiita de código bonito, 2014 https://github.com/robbiehanson/XMPPFramework/blob/
a833c29e5b26cc3cca3d1f37490eed8ff5dd65e2/Extensions/ XEP-0009/XMPPIQ%2BJabberRPC.m
None
None
None
S O L I D pen closed
Como melhorar? • Interface comum - @protocol S O L
I D pen closed
Vamos falar sobre Design Patterns
Por que todo mundo fala em Design Patterns?
Singleton
Singleton - prós •Objeto pesado criado uma única vez! •Guarda
estado
Singleton - cons
Singleton - cons •Objetos pesados!
Singleton - Vilão ou mocinho? Use com moderação!
Decorator
Decorator https://github.com/robbiehanson/XMPPFramework/blob/ a833c29e5b26cc3cca3d1f37490eed8ff5dd65e2/Utilities/ DDList.m
None
Decorator
None
Decorator • Separar esses nodes • Associar os nodes
Conclusões • Dê uma melhorada no código! • Não precisa
usar design patterns o tempo todo, mas eventualmente ajuda • Dê uma revisada nos princípios de OO e SOLID! Quem for manter seu código agradece!
Obrigada! @hannelita
[email protected]