iOS antipatterns

Post on 24-Jan-2015

371 views 1 download

description

Palestra no TDC SP 2014 - trilha de iOS

Transcript of iOS antipatterns

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!

Obrigada!@hannelita

hannelita@gmail.com