Upload
rodrigo-dos-santos
View
3.263
Download
0
Embed Size (px)
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: [email protected]
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?