Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

48
Globalcode – Open4education Trilha PHP Rodrigo dos Santos rodrigodossantos.ws @rosantoz Combatendo o código procedural

description

Slides de minha palestra na Trilha PHP do TDC 2012 Florianópolis

Transcript of Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Page 1: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Trilha PHPRodrigo dos Santos

rodrigodossantos.ws@rosantoz

Combatendo o código procedural

Page 2: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Sobre mim

Desenvolvedor PHP desde 2004

Zend Certified Engineer PHP 5.3

Pós Graduado em Engenharia de Projetos de Software

Sócio-Proprietário da empresa Ilha Web (www.ilhaweb.net)

Page 3: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Sobre mim

Blog pessoal: www.rodrigodossantos.ws

Twitter: @rosantoz

E-mail: [email protected]

Page 4: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Nosso Contexto

Page 5: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Programação procedural

➔ Também conhecida como Programação Imperativa;

➔ Facilita o aprendizado de uma linguagem de programação;

➔ Foco em “Como fazer” e não o “quê fazer”;

➔ Proporciona liberdade ao programador, mas pode se tornar um grande problema;

Page 6: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Programação procedural

➔ Cada página do sistema é feito como um bloco.

➔ Não existe a separação de objetivos e responsabilidades.

➔ Alto grau de acoplamento entre interface, lógica de negócio e persistência de dados.

➔ Não segue um padrão específico;

➔Código difícil de ler;

➔Dificulta o processo de evolução e manutenção;

Page 7: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Exemplo

Page 8: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

O que fazer então?

Separar as responsabilidades

Page 9: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

O que fazer então?

Separar as responsabilidades

Figura: http://www.netrostar.com

Page 10: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Antes de começar ...

Nosso ambiente de desenvolvimento:

Page 11: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Antes de começar ...

Nosso ambiente de desenvolvimento:

error_reporting(E_ALL | E_STRICT); error_reporting(-1);

Page 12: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Antes de começar ...

Nosso ambiente de desenvolvimento:

error_reporting(E_ALL | E_STRICT);error_reporting(-1);

Xdebug;

Page 13: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Antes de começar ...

Nosso ambiente de desenvolvimento:

error_reporting(E_ALL | E_STRICT);error_reporting(-1);

Xdebug;

@ é proibido (Ex. @include “config.php”)

Page 14: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Adote um padrão de código

Zend;

Pear;

Squiz;

Crie seu próprio padrão, mas tenha um padrão;

Page 15: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Adote um padrão de códigoPHP_CodeSniffer

Page 16: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Adote um padrão de códigoPHPMD

Page 17: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Separando as coisas

Page 18: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Separando as coisas

Page 19: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Template Engine

Possibilita separar o código HTML do código PHP

(Zend_View, Zend_Layout)

Page 20: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Template Engine

Page 21: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Separando as coisas

Page 22: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Separando as coisas

Page 23: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Hora de Modelar

Foto: www.mulherbeleza.com.br

Page 24: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Por que modelar?

Page 25: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Por que modelar?

Ajuda a entender o problema;

Page 26: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Por que modelar?

Ajuda a entender o problema;

Nos faz pensar antes de fazer;

Page 27: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Por que modelar?

Ajuda a entender o problema;

Nos faz pensar antes de fazer;

Facilita a comunicação com o usuário;

Page 28: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Por que modelar?

Ajuda a entender o problema;

Nos faz pensar antes de fazer;

Facilita a comunicação com o usuário;

Serve de documentação do sistema;

Page 29: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Como fazer?

Comece pelo mais importante (comece pelo pior);

Page 30: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Como fazer?

Comece pelo mais importante (comece pelo pior);

UML;

Page 31: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Como fazer?

Comece pelo mais importante (comece pelo pior);

UML;

Ferramentas case (Ex. Entreprise Architect);

Page 32: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Como fazer?

Comece pelo mais importante (comece pelo pior);

UML;

Ferramentas case (Ex. Entreprise Architect);

Papel e caneta também servem.

Page 33: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Ex.: Diagrama de classes

Page 34: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Fazer código, finalmente!

Page 35: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)

Page 36: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)Escreva um teste;

Page 37: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)Escreva um teste;

Faça-o funcionar;

Page 38: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)Escreva um teste;

Faça-o funcionar;

Refatore.

Page 39: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)Escreva um teste;

Faça-o funcionar;

Refatore.

Resultado: código limpo e que funciona

Page 40: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)Escreva um teste;

Faça-o funcionar;

Refatore.

Resultado: código limpo e que funciona

Para PHP: PHPUnit

Page 41: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Separando as coisas

Page 42: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Separando as coisas

Page 43: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Ciclo contínuo

Page 44: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Ciclo contínuoA cada novo release:

Page 45: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Ciclo contínuoA cada novo release:

Adicionamos novas funcionalidades;

Page 46: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Ciclo contínuoA cada novo release:

Adicionamos novas funcionalidades;

Refatoramos uma parte do código legado;

Page 47: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Ciclo contínuoA cada novo release:

Adicionamos novas funcionalidades;

Refatoramos uma parte do código legado;

Mantemos a documentação.

Page 48: Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP

Globalcode – Open4education

Perguntas?