83
CLEAN VIEW CONTROLLERS

CLEAN - qconsp.comMOBILE... · seu projeto? XPTOViewController.m. This is bad. O QUE FAZER? MVC. Model Controller View. Massive View Controller. Model Controller View. Model Controller

Embed Size (px)

Citation preview

CLEAN

VIEW CONTROLLERS

Qual arquivo você

procura quando

precisa...

alterar os parâmetros

de uma animação?

mudar a mensagem

de um AlertView?

modificar o datasource

ou o delegate de uma

TableView?

Qual é o maior

arquivo de código do

seu projeto?

XPTOViewController.m

This is bad.

O QUE

FAZER?

MVC

Model

Controller

View

Massive View

Controller

Model

Controller

View

Model

Controller

View

Model View

Controller

!

View Controller

XPTOViewController.m

Model View

Controller

CERTO?

No.

Model View

Controller

Model

Controller

View

NA PRÁTICA OnboardingViewController

REFATORANDO

Model View

Controller

Código de view na

camada de view.

@implementation XPTOViewController

…. #pragma mark VIEW LAYER

….. ?

No.

@interface XPTOView : UIView

Model View

Controller

Código de modelo na

camada de modelo.

Classes separadas para implementar

delegates e

dataSources.

E FINALMENTE…

Model View

Controller

Código de controller na

camada de controller.

Model

Controller

View

DataSource ScrollView

COMPARANDO

7 JEDI HINTS

ESTABELEÇA

L I M I T E S

1

MÉTODOS ~ 10 LINHAS

ARQUIVOS ~ 150 LINHAS

CATEGORIAS

View meets model.

2

OTIMIZAÇÃO P R E C O C E G R A D U A L

3

#pragma mark

4

CRIE ARQUIVOS

5

INTERFACE BUILDER

6

DEMO!

!

MODULARIZE

7

Inspiração

”Se não vamos nos

importar com a

legibilidade do código,

deveríamos voltar a

escrever código assembly.”

”Código não deve ser

escrito somente para

funcionar, mas também

para ser entendido por

outras pessoas.”

Foque em escrever pequenas

classes, pequenos métodos.

Nós lidamos melhor com coisas

simples.

FAÇA POR

VOCÊ

OBRIGADO !

Further Reading !

http://www.objc.io/issue-1/

@chriseidhof

Perguntas? Christian Sampaio

!

@chrisfsampaio

chrisfsampaio.github.io [email protected]