ios antipatterns
DESCRIPTION
Palestra no TDC SP 2014 - trilha de iOSTRANSCRIPT
![Page 1: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/1.jpg)
iOS Antipatterns Tudo que você deveria fazer no seu código, só que
não.
![Page 2: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/2.jpg)
Oi!
• Hanneli (‘H' mudo)
• CodeMiner 42
• Café, Pokémon, Lego e bichos <3
HIRING
![Page 3: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/3.jpg)
O que é um código ‘ruim'?
![Page 4: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/4.jpg)
Por que escrevemos código ruim?
![Page 5: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/5.jpg)
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)
![Page 6: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/6.jpg)
O que *Não* vamos ver aqui
• Aula chata de OO
• Introdução a Objective C / iOS / etc
• Design Patterns
• Aula sobre SOLID
![Page 7: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/7.jpg)
Paradigma == modelo; padrão
Toda vez que você padroniza algo, você
facilita na identificação e na produção
![Page 8: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/8.jpg)
Orientação a Objetos == paradigma
O que é OO?Herança
PolimorfismoEncapsulamento
![Page 9: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/9.jpg)
O que é OO?
“Passar Mensagem.”
![Page 10: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/10.jpg)
OO para Objective C?
![Page 11: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/11.jpg)
Colocando ordem na ‘troca de mensagens'
SOLID
![Page 12: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/12.jpg)
“Mantenha suas classes pequenas"Xiita de código bonito, 2014
https://github.com/robbiehanson/XMPPFramework/blob/master/Core/XMPPStream.m
![Page 13: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/13.jpg)
![Page 14: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/14.jpg)
“1 classe, 1 responsabilidade”Xiita de código bonito, 2014
SOLID
ingle Responsibility
![Page 15: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/15.jpg)
Como melhorar?
SOLID
ingle Responsibility
• Separar o controle dos bytes em outra classe
• Separar o controle dos Events em outra classe
• Separar a autenticação (!!11!!!)
![Page 16: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/16.jpg)
“Cuidado com a herança"Xiita de código bonito, 2014
https://github.com/robbiehanson/XMPPFramework/blob/a833c29e5b26cc3cca3d1f37490eed8ff5dd65e2/Extensions/
XEP-0009/XMPPIQ%2BJabberRPC.m
![Page 17: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/17.jpg)
![Page 18: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/18.jpg)
![Page 19: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/19.jpg)
![Page 20: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/20.jpg)
S
OL
I
D
pen closed
![Page 21: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/21.jpg)
Como melhorar?
• Interface comum - @protocol
S
OL
I
D
pen closed
![Page 22: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/22.jpg)
Vamos falar sobre Design Patterns
![Page 23: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/23.jpg)
Por que todo mundo fala em Design Patterns?
![Page 24: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/24.jpg)
Singleton
![Page 25: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/25.jpg)
Singleton - prós
•Objeto pesado criado uma única vez!•Guarda estado
![Page 26: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/26.jpg)
Singleton - cons
![Page 27: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/27.jpg)
Singleton - cons
•Objetos pesados!
![Page 28: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/28.jpg)
Singleton - Vilão ou mocinho?
Use com moderação!
![Page 29: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/29.jpg)
Decorator
![Page 30: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/30.jpg)
Decorator
https://github.com/robbiehanson/XMPPFramework/blob/a833c29e5b26cc3cca3d1f37490eed8ff5dd65e2/Utilities/
DDList.m
![Page 31: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/31.jpg)
![Page 32: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/32.jpg)
Decorator
![Page 33: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/33.jpg)
![Page 34: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/34.jpg)
Decorator
• Separar esses nodes
• Associar os nodes
![Page 35: iOS antipatterns](https://reader034.vdocuments.site/reader034/viewer/2022051412/54c3aac14a79593e5f8b456d/html5/thumbnails/35.jpg)
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!