Sua aplicação não é filha de um framework

96
Sua aplicação não é filha de um framework Dev In Company 2014

Transcript of Sua aplicação não é filha de um framework

Page 1: Sua aplicação não é filha de um framework

Sua aplicação não é filha de um framework

Dev In Company 2014

Page 2: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”

Sobre mim...

Page 3: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”- Programador há “um tanto” de tempo (+10 anos)

Sobre mim...

Page 4: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”- Programador há “um tanto” de tempo (+10 anos)- APAIXONADO por Arquitetura de Software

Sobre mim...

Page 5: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”- Programador há “um tanto” de tempo (+10 anos)- APAIXONADO por Arquitetura de Software- Músico, Produtor, DJ… essas coisas aí.

Sobre mim...

Page 6: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”- Programador há “um tanto” de tempo (+10 anos)- APAIXONADO por Arquitetura de Software- Músico, Produtor, DJ… essas coisas aí.- @yourwebmaker

Sobre mim...

Page 7: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”- Programador há “um tanto” de tempo (+10 anos)- APAIXONADO por Arquitetura de Software- Músico, Produtor, DJ… essas coisas aí.- @yourwebmaker (só escrevo besteira)

Sobre mim...

Page 8: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”- Programador há “um tanto” de tempo (+10 anos)- APAIXONADO por Arquitetura de Software- Músico, Produtor, DJ… essas coisas aí.- @yourwebmaker (só escrevo besteira)- fb.com/dlpinheiro

Sobre mim...

Page 9: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”- Programador há “um tanto” de tempo (+10 anos)- APAIXONADO por Arquitetura de Software- Músico, Produtor, DJ… essas coisas aí.- @yourwebmaker (só escrevo besteira)- fb.com/dlpinheiro

Sobre mim...

Page 10: Sua aplicação não é filha de um framework

- Daniel Lima dos Anjos Pinheiro, a.k.a “Tonho da Lua”- Programador há “um tanto” de tempo (+10 anos)- APAIXONADO por Arquitetura de Software- Músico, Produtor, DJ… essas coisas aí.- @yourwebmaker (só escrevo besteira)- fb.com/dlpinheiro

Sobre mim...

Page 11: Sua aplicação não é filha de um framework
Page 12: Sua aplicação não é filha de um framework

- Maior site de cifras do Brasil- 560mil visitas diárias- Projeto de 18 anos e…. crescendo!

Page 13: Sua aplicação não é filha de um framework

- Código legado em alguns lugares- Código espalhado- “Feito em casa”- Despadronizado- Difícil de manter

Page 14: Sua aplicação não é filha de um framework

Vamos usar um framework!

Page 15: Sua aplicação não é filha de um framework

Full-stack- Zend- Symfony- Cake- Laravel- Phalcon- “um tanto”

Qual iríamos usar?

Page 16: Sua aplicação não é filha de um framework

Full-stack- Zend- Symfony- Cake- Laravel- Phalcon- “um tanto”

Qual iríamos usar?

Micro- Silex- Respect- Slim- Aura- Flight- “um tanto”

Page 17: Sua aplicação não é filha de um framework

Phalcon

Page 18: Sua aplicação não é filha de um framework

Phalcon

Prós- Extension do PHP- Compilado- Alta performance- Baixo consumo de memória- Responde a um grande número de reqs/s

Page 19: Sua aplicação não é filha de um framework

Phalcon

Page 20: Sua aplicação não é filha de um framework

Phalcon

Page 21: Sua aplicação não é filha de um framework

Phalcon

Page 22: Sua aplicação não é filha de um framework

Phalcon

Page 23: Sua aplicação não é filha de um framework

PhalconContras- Escrito em C

- Quem aqui é um bom desenvolvedor C?- Péssimo para testar

- “final” em diversos métodos- Péssimo para debugar

- Stack-trace? Onde? Como?

Page 24: Sua aplicação não é filha de um framework

Quem aqui é um bom desenvolvedor C?

Page 25: Sua aplicação não é filha de um framework

OK...Dá pra levar#chatiado

Page 26: Sua aplicação não é filha de um framework

Até que…

Page 27: Sua aplicação não é filha de um framework

HHVM

Page 28: Sua aplicação não é filha de um framework

HHVM

- Symfony 2 + HHVM > Phalcon- Zend 2 + HHVM > Phalcon- Controle do framework usado- Debug e manutenção do framework usado

Page 29: Sua aplicação não é filha de um framework

HHVM

Page 30: Sua aplicação não é filha de um framework

HHVM

Page 31: Sua aplicação não é filha de um framework

HHVM

Assunto pra outra palestra =)

Page 32: Sua aplicação não é filha de um framework

Let’s code direito!!!

Page 33: Sua aplicação não é filha de um framework

Let’s Desacoplar!

Page 34: Sua aplicação não é filha de um framework

Não… Pera!

Page 35: Sua aplicação não é filha de um framework

Pense!

Page 36: Sua aplicação não é filha de um framework

- Isso não é receita de bolo!- Assim como quase tudo em dev também não é!

- Talvez não seja o caso para sites novos!- Não é necessário reinventar a roda!

Pense!

Page 37: Sua aplicação não é filha de um framework

Pensou?

Page 38: Sua aplicação não é filha de um framework

Let’s code direito!!!

Page 39: Sua aplicação não é filha de um framework

Separando conceitos

Page 40: Sua aplicação não é filha de um framework

MVC?

Page 41: Sua aplicação não é filha de um framework

Quanto mais camadas melhor!

Page 42: Sua aplicação não é filha de um framework
Page 43: Sua aplicação não é filha de um framework

Divida camadas em sub-camadas

Page 44: Sua aplicação não é filha de um framework

User Interface

Application

Domain

Infra

Forms Nav Grid Search

Input Validation Session Auth Router

Domain Services

Entities Repositories Value Objects

Database Cache FileSystem Log

...

Factories

Page 45: Sua aplicação não é filha de um framework

Domain

Domain Services

Entities Repositories Value Objects Factories

Domain do Cifra Club

Page 46: Sua aplicação não é filha de um framework

Domain

Domain Services

Entities Repositories Value Objects Factories

- Exibir cifras- Transpor cifras- Listar músicas - Ver video aulas- Enviar cifra- Moderar cifra- Moderar usuários

- Top artistas por periodo- Top cifras por periodo- Segredinhos =)

Page 47: Sua aplicação não é filha de um framework

Domain

Domain Services

Entities Repositories Value Objects Factories

Domain é vida!- Independente do framework, ele será o mesmo!- Se importe com ele, de verdade =)- Coração da sua aplicação!

Page 48: Sua aplicação não é filha de um framework

Domain

Domain Services

Entities Repositories Value Objects Factories

Domain é vida!- Independente do framework, ele será o mesmo!- Se importe com ele, de verdade =)- Coração da sua aplicação!

- Ele NÃO DEVE saber qual framework é usado.- Ele NÃO DEVE saber qual banco ou infra é usada.

Page 49: Sua aplicação não é filha de um framework

Domain

Domain Services

Entities Repositories Value Objects Factories

Mas… Como separá-lo?

Page 50: Sua aplicação não é filha de um framework

Interfaces

Page 51: Sua aplicação não é filha de um framework

Repositories

Page 52: Sua aplicação não é filha de um framework

Services

Page 53: Sua aplicação não é filha de um framework

S.O.L.I.D.

Page 54: Sua aplicação não é filha de um framework

Tudo isso ligado com...

Page 55: Sua aplicação não é filha de um framework

Injeção de Dependência

Page 56: Sua aplicação não é filha de um framework

Cadê o código?

Page 58: Sua aplicação não é filha de um framework

Reflexões sobre o gist...

Page 59: Sua aplicação não é filha de um framework

Apesar de parecerem “simples” e “facilitar” a

vida, caia fora deles!

Page 60: Sua aplicação não é filha de um framework

“deles”, quem?

Page 61: Sua aplicação não é filha de um framework

dos frameworks?

Page 62: Sua aplicação não é filha de um framework

NÃO!!!

Page 63: Sua aplicação não é filha de um framework

Desses caras aqui!!!

Page 64: Sua aplicação não é filha de um framework

- C.R.U.D.

Desses caras aqui!!!

Page 65: Sua aplicação não é filha de um framework

- C.R.U.D.- Arrays

Desses caras aqui!!!

Page 66: Sua aplicação não é filha de um framework

- C.R.U.D.- Arrays- Rotinas

Desses caras aqui!!!

Page 67: Sua aplicação não é filha de um framework

- C.R.U.D.- Arrays- Rotinas- Código “Deus”

Desses caras aqui!!!

Page 68: Sua aplicação não é filha de um framework

Interfaces devem representar o que seu

Domain faz...

Page 69: Sua aplicação não é filha de um framework

interface MusicaRepositoryInterface

{

function buscarMaisAcessadas($quantidade = 1000);

function buscarMaisAcessadasPorArtista(Artista $artista);

}

#bom

Page 70: Sua aplicação não é filha de um framework

interface ArtistaRepositoryInterface

{

function buscarMaisAcessados(Periodo $periodo);

}

#bom

Page 71: Sua aplicação não é filha de um framework

… E depois devem ser implementadas em outras

camadas!

Page 72: Sua aplicação não é filha de um framework

class MusicaDbRepository implements MusicaRepositoryInterface

{

function buscarMaisAcessadas($quantidade = 1000)

{ //.. acessa o banco }

function buscarMaisAcessadasPorArtista(Artista $artista)

{ //.. acessa o banco }

}

#bom

Page 73: Sua aplicação não é filha de um framework

“Saber” muito em OO é MUITO ruim!

Page 74: Sua aplicação não é filha de um framework

class DomainClass

{

public function fazAlgumaCoisa()

{

$infraObject = new InfraClass;

$applicationObject = new ApplicationClass;

$uiObject = new UIClass;

}

}

#ruim

Page 75: Sua aplicação não é filha de um framework

class DomainClass

{

public function fazAlgumaCoisa(

DomainInterfaceX $infraObject,

DomainInterfaceY $appObject,

DomainInterfaceZ $uiObject,

)

{ //.. }

}

#bom

Page 76: Sua aplicação não é filha de um framework

Evite usar o operador “new” dentro de métodos

Page 77: Sua aplicação não é filha de um framework

public function fazAlgo()

{

$componente = new Componente;

}

#ruim

Page 78: Sua aplicação não é filha de um framework

$componente = new SeuComponente;

//..

public function fazAlgo(SeuComponente

$componente)

{

$foo = $componente->fazAlgo();

}

#bom

Page 79: Sua aplicação não é filha de um framework

Evite singletons dentro de *suas* classes

Page 80: Sua aplicação não é filha de um framework

public function fazAlgo()

{

$componente = $frameworkComponente::

getInstance();

}

#ruim

Page 81: Sua aplicação não é filha de um framework

$componente = $frameworkComponente::getInstance();

//..

public function fazAlgo(SeuComponente

$componente)

{

$componente->fazAlgo();

}

#bom

Page 82: Sua aplicação não é filha de um framework

Evite herança de componentes do

framework no seu Domain

Page 83: Sua aplicação não é filha de um framework

class DomainClass extends FrameworkClass

#ruim

Page 84: Sua aplicação não é filha de um framework

class DomainClass

#bom

Page 85: Sua aplicação não é filha de um framework

Lembre-se:“Software development is

all design”

Page 86: Sua aplicação não é filha de um framework

Seja pramático na escolha das suas libs...

Page 87: Sua aplicação não é filha de um framework

… evite libs “novas”, pouco ativas, non-community

standards…

Page 88: Sua aplicação não é filha de um framework

#use libs de verdade

TWIG

Monolog

Doctrine

sf\Crawler

aura\signal

Page 89: Sua aplicação não é filha de um framework
Page 90: Sua aplicação não é filha de um framework

Pense!

Page 91: Sua aplicação não é filha de um framework

Phalcon???

Page 92: Sua aplicação não é filha de um framework

Perguntas?

Page 95: Sua aplicação não é filha de um framework

Estamos contratando!

Page 96: Sua aplicação não é filha de um framework

Valeu!