ios antipatterns

36
iOS Antipatterns Tudo que você deveria fazer no seu código, só que não.

Upload: hanneli-tavante

Post on 24-Jan-2015

371 views

Category:

Technology


1 download

DESCRIPTION

Palestra no TDC SP 2014 - trilha de iOS

TRANSCRIPT

Page 1: iOS antipatterns

iOS Antipatterns Tudo que você deveria fazer no seu código, só que

não.

Page 2: iOS antipatterns

Oi!

• Hanneli (‘H' mudo)

• CodeMiner 42

• Café, Pokémon, Lego e bichos <3

HIRING

Page 3: iOS antipatterns

O que é um código ‘ruim'?

Page 4: iOS antipatterns

Por que escrevemos código ruim?

Page 5: iOS antipatterns

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

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

Paradigma == modelo; padrão

Toda vez que você padroniza algo, você

facilita na identificação e na produção

Page 8: iOS antipatterns

Orientação a Objetos == paradigma

O que é OO?Herança

PolimorfismoEncapsulamento

Page 9: iOS antipatterns

O que é OO?

“Passar Mensagem.”

Page 10: iOS antipatterns

OO para Objective C?

Page 11: iOS antipatterns

Colocando ordem na ‘troca de mensagens'

SOLID

Page 12: iOS antipatterns

“Mantenha suas classes pequenas"Xiita de código bonito, 2014

https://github.com/robbiehanson/XMPPFramework/blob/master/Core/XMPPStream.m

Page 13: iOS antipatterns
Page 14: iOS antipatterns

“1 classe, 1 responsabilidade”Xiita de código bonito, 2014

SOLID

ingle Responsibility

Page 15: iOS antipatterns

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

“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
Page 18: iOS antipatterns
Page 19: iOS antipatterns
Page 20: iOS antipatterns

S

OL

I

D

pen closed

Page 21: iOS antipatterns

Como melhorar?

• Interface comum - @protocol

S

OL

I

D

pen closed

Page 22: iOS antipatterns

Vamos falar sobre Design Patterns

Page 23: iOS antipatterns

Por que todo mundo fala em Design Patterns?

Page 24: iOS antipatterns

Singleton

Page 25: iOS antipatterns

Singleton - prós

•Objeto pesado criado uma única vez!•Guarda estado

Page 26: iOS antipatterns

Singleton - cons

Page 27: iOS antipatterns

Singleton - cons

•Objetos pesados!

Page 28: iOS antipatterns

Singleton - Vilão ou mocinho?

Use com moderação!

Page 29: iOS antipatterns

Decorator

Page 30: iOS antipatterns

Decorator

https://github.com/robbiehanson/XMPPFramework/blob/a833c29e5b26cc3cca3d1f37490eed8ff5dd65e2/Utilities/

DDList.m

Page 31: iOS antipatterns
Page 32: iOS antipatterns

Decorator

Page 33: iOS antipatterns
Page 34: iOS antipatterns

Decorator

• Separar esses nodes

• Associar os nodes

Page 35: iOS antipatterns

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!

Page 36: iOS antipatterns

Obrigada!@hannelita

[email protected]