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

Preview:

DESCRIPTION

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

Citation preview

Globalcode – Open4education

Trilha PHPRodrigo dos Santos

rodrigodossantos.ws@rosantoz

Combatendo o código procedural

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)

Globalcode – Open4education

Sobre mim

Blog pessoal: www.rodrigodossantos.ws

Twitter: @rosantoz

E-mail: rodrigo@ilhaweb.net

Globalcode – Open4education

Nosso Contexto

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;

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;

Globalcode – Open4education

Exemplo

Globalcode – Open4education

O que fazer então?

Separar as responsabilidades

Globalcode – Open4education

O que fazer então?

Separar as responsabilidades

Figura: http://www.netrostar.com

Globalcode – Open4education

Antes de começar ...

Nosso ambiente de desenvolvimento:

Globalcode – Open4education

Antes de começar ...

Nosso ambiente de desenvolvimento:

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

Globalcode – Open4education

Antes de começar ...

Nosso ambiente de desenvolvimento:

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

Xdebug;

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”)

Globalcode – Open4education

Adote um padrão de código

Zend;

Pear;

Squiz;

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

Globalcode – Open4education

Adote um padrão de códigoPHP_CodeSniffer

Globalcode – Open4education

Adote um padrão de códigoPHPMD

Globalcode – Open4education

Separando as coisas

Globalcode – Open4education

Separando as coisas

Globalcode – Open4education

Template Engine

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

(Zend_View, Zend_Layout)

Globalcode – Open4education

Template Engine

Globalcode – Open4education

Separando as coisas

Globalcode – Open4education

Separando as coisas

Globalcode – Open4education

Hora de Modelar

Foto: www.mulherbeleza.com.br

Globalcode – Open4education

Por que modelar?

Globalcode – Open4education

Por que modelar?

Ajuda a entender o problema;

Globalcode – Open4education

Por que modelar?

Ajuda a entender o problema;

Nos faz pensar antes de fazer;

Globalcode – Open4education

Por que modelar?

Ajuda a entender o problema;

Nos faz pensar antes de fazer;

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

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;

Globalcode – Open4education

Como fazer?

Comece pelo mais importante (comece pelo pior);

Globalcode – Open4education

Como fazer?

Comece pelo mais importante (comece pelo pior);

UML;

Globalcode – Open4education

Como fazer?

Comece pelo mais importante (comece pelo pior);

UML;

Ferramentas case (Ex. Entreprise Architect);

Globalcode – Open4education

Como fazer?

Comece pelo mais importante (comece pelo pior);

UML;

Ferramentas case (Ex. Entreprise Architect);

Papel e caneta também servem.

Globalcode – Open4education

Ex.: Diagrama de classes

Globalcode – Open4education

Fazer código, finalmente!

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)Escreva um teste;

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)Escreva um teste;

Faça-o funcionar;

Globalcode – Open4education

Fazer código, finalmente!

TDD (Test Driven Development)Escreva um teste;

Faça-o funcionar;

Refatore.

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

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

Globalcode – Open4education

Separando as coisas

Globalcode – Open4education

Separando as coisas

Globalcode – Open4education

Ciclo contínuo

Globalcode – Open4education

Ciclo contínuoA cada novo release:

Globalcode – Open4education

Ciclo contínuoA cada novo release:

Adicionamos novas funcionalidades;

Globalcode – Open4education

Ciclo contínuoA cada novo release:

Adicionamos novas funcionalidades;

Refatoramos uma parte do código legado;

Globalcode – Open4education

Ciclo contínuoA cada novo release:

Adicionamos novas funcionalidades;

Refatoramos uma parte do código legado;

Mantemos a documentação.

Globalcode – Open4education

Perguntas?