ios antipatterns
DESCRIPTION
Palestra no TDC SP 2014 - trilha de iOSTRANSCRIPT
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
PolimorfismoEncapsulamento
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
“1 classe, 1 responsabilidade”Xiita de código bonito, 2014
SOLID
ingle Responsibility
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!!!)
“Cuidado com a herança"Xiita de código bonito, 2014
https://github.com/robbiehanson/XMPPFramework/blob/a833c29e5b26cc3cca3d1f37490eed8ff5dd65e2/Extensions/
XEP-0009/XMPPIQ%2BJabberRPC.m
S
OL
I
D
pen closed
Como melhorar?
• Interface comum - @protocol
S
OL
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
Decorator
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!