SlideShare uma empresa Scribd logo
Combatendo o código procedural
         Trilha PHP
         Rodrigo dos Santos
          rodrigodossantos.ws
               @rosantoz



                                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ódigo
PHP_CodeSniffer




                            Globalcode – Open4education
Adote um padrão de código
PHPMD




                            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ínuo
 A cada novo release:




                        Globalcode – Open4education
Ciclo contínuo
 A cada novo release:

   Adicionamos novas funcionalidades;




                                        Globalcode – Open4education
Ciclo contínuo
 A cada novo release:

   Adicionamos novas funcionalidades;

   Refatoramos uma parte do código legado;




                                        Globalcode – Open4education
Ciclo contínuo
 A cada novo release:

   Adicionamos novas funcionalidades;

   Refatoramos uma parte do código legado;

   Mantemos a documentação.




                                        Globalcode – Open4education
Perguntas?

       Globalcode – Open4education

Mais conteúdo relacionado

Mais procurados

Gestão da Automação TDC Floripa 2018
Gestão da Automação TDC Floripa 2018Gestão da Automação TDC Floripa 2018
Gestão da Automação TDC Floripa 2018
Ernesto Barbosa
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
Camilo Lopes
 
Service virtualization floripa
Service virtualization floripaService virtualization floripa
Service virtualization floripa
Ernesto Barbosa
 
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
Configurando aplicações em ambiente RedHat OpenShift através do EclipseConfigurando aplicações em ambiente RedHat OpenShift através do Eclipse
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
Alberlan Barros
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
tdc-globalcode
 
Tdd como uma ferramenta de arquitetura
Tdd como uma ferramenta de arquiteturaTdd como uma ferramenta de arquitetura
Tdd como uma ferramenta de arquitetura
Everton Tavares
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e Spring
Eder Magalhães
 
Design de Software com ASP.NET MVC
Design de Software com ASP.NET MVCDesign de Software com ASP.NET MVC
Design de Software com ASP.NET MVC
Waldyr Felix
 
TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
Rafael Benevides
 
Sua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shiftSua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shift
Ricardo Martinelli de Oliveira
 
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
Taise Dias da Silva
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
Kamilla Queiroz Xavier
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startups
tdc-globalcode
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startups
tdc-globalcode
 
Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF
Otávio Santana
 
Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!
tdc-globalcode
 
Introdução à Segurança de Containers e Kubernetes
Introdução à Segurança de Containers e KubernetesIntrodução à Segurança de Containers e Kubernetes
Introdução à Segurança de Containers e Kubernetes
Tenchi Security
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
Eder Magalhães
 
Demandas legais no desenvolvimento de software
Demandas legais no desenvolvimento de softwareDemandas legais no desenvolvimento de software
Demandas legais no desenvolvimento de software
Claudio Ferreira Filho
 

Mais procurados (19)

Gestão da Automação TDC Floripa 2018
Gestão da Automação TDC Floripa 2018Gestão da Automação TDC Floripa 2018
Gestão da Automação TDC Floripa 2018
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
 
Service virtualization floripa
Service virtualization floripaService virtualization floripa
Service virtualization floripa
 
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
Configurando aplicações em ambiente RedHat OpenShift através do EclipseConfigurando aplicações em ambiente RedHat OpenShift através do Eclipse
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
Tdd como uma ferramenta de arquitetura
Tdd como uma ferramenta de arquiteturaTdd como uma ferramenta de arquitetura
Tdd como uma ferramenta de arquitetura
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e Spring
 
Design de Software com ASP.NET MVC
Design de Software com ASP.NET MVCDesign de Software com ASP.NET MVC
Design de Software com ASP.NET MVC
 
TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
 
Sua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shiftSua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shift
 
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startups
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startups
 
Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF
 
Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!
 
Introdução à Segurança de Containers e Kubernetes
Introdução à Segurança de Containers e KubernetesIntrodução à Segurança de Containers e Kubernetes
Introdução à Segurança de Containers e Kubernetes
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
Demandas legais no desenvolvimento de software
Demandas legais no desenvolvimento de softwareDemandas legais no desenvolvimento de software
Demandas legais no desenvolvimento de software
 

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

Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
Daniel Archer Marques Cramer
 
Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraDos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestra
Rafael Chaves
 
Automacao de testes em .NET? Keep Calm and Just do It
Automacao de testes em .NET? Keep Calm and Just do ItAutomacao de testes em .NET? Keep Calm and Just do It
Automacao de testes em .NET? Keep Calm and Just do It
tdc-globalcode
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools Flow
Ricardo Longa
 
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquiteturaTDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
Eric Lemes
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
tdc-globalcode
 
Programação Funcional usando F#
Programação Funcional usando F#Programação Funcional usando F#
Programação Funcional usando F#
Gabriel Schade Cardoso
 
Revolução Go TDC 2016
Revolução Go TDC 2016Revolução Go TDC 2016
Revolução Go TDC 2016
Tomas Cretella Foglio
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
Gabriel Schade Cardoso
 
Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#
Paulo Cesar Ortins Brito
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Adam Victor Brandizzi
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
Walmyr Lima e Silva Filho
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
tdc-globalcode
 
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
Vinicius Campos Silva
 
Existem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu timeExistem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu time
Décio Heinzelmann Luckow
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
tdc-globalcode
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
Gabriel Schade Cardoso
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
Cristiano Caetano
 
Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
Gisele Zomer Rossi
 
TDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestraTDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestra
Rafael Chaves
 

Semelhante a Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP (20)

Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraDos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestra
 
Automacao de testes em .NET? Keep Calm and Just do It
Automacao de testes em .NET? Keep Calm and Just do ItAutomacao de testes em .NET? Keep Calm and Just do It
Automacao de testes em .NET? Keep Calm and Just do It
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools Flow
 
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquiteturaTDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
Programação Funcional usando F#
Programação Funcional usando F#Programação Funcional usando F#
Programação Funcional usando F#
 
Revolução Go TDC 2016
Revolução Go TDC 2016Revolução Go TDC 2016
Revolução Go TDC 2016
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
 
Existem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu timeExistem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu time
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
 
Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
 
TDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestraTDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestra
 

Último

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 

Último (8)

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 

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

  • 1. Combatendo o código procedural Trilha PHP Rodrigo dos Santos rodrigodossantos.ws @rosantoz Globalcode – Open4education
  • 2. 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
  • 3. Sobre mim Blog pessoal: www.rodrigodossantos.ws Twitter: @rosantoz E-mail: rodrigo@ilhaweb.net Globalcode – Open4education
  • 4. Nosso Contexto Globalcode – Open4education
  • 5. 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
  • 6. 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
  • 7. Exemplo Globalcode – Open4education
  • 8. O que fazer então? Separar as responsabilidades Globalcode – Open4education
  • 9. O que fazer então? Separar as responsabilidades Figura: http://www.netrostar.com Globalcode – Open4education
  • 10. Antes de começar ... Nosso ambiente de desenvolvimento: Globalcode – Open4education
  • 11. Antes de começar ... Nosso ambiente de desenvolvimento: error_reporting(E_ALL | E_STRICT); error_reporting(-1); Globalcode – Open4education
  • 12. Antes de começar ... Nosso ambiente de desenvolvimento: error_reporting(E_ALL | E_STRICT); error_reporting(-1); Xdebug; Globalcode – Open4education
  • 13. 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
  • 14. Adote um padrão de código Zend; Pear; Squiz; Crie seu próprio padrão, mas tenha um padrão; Globalcode – Open4education
  • 15. Adote um padrão de código PHP_CodeSniffer Globalcode – Open4education
  • 16. Adote um padrão de código PHPMD Globalcode – Open4education
  • 17. Separando as coisas Globalcode – Open4education
  • 18. Separando as coisas Globalcode – Open4education
  • 19. Template Engine Possibilita separar o código HTML do código PHP (Zend_View, Zend_Layout) Globalcode – Open4education
  • 20. Template Engine Globalcode – Open4education
  • 21. Separando as coisas Globalcode – Open4education
  • 22. Separando as coisas Globalcode – Open4education
  • 23. Hora de Modelar Foto: www.mulherbeleza.com.br Globalcode – Open4education
  • 24. Por que modelar? Globalcode – Open4education
  • 25. Por que modelar? Ajuda a entender o problema; Globalcode – Open4education
  • 26. Por que modelar? Ajuda a entender o problema; Nos faz pensar antes de fazer; Globalcode – Open4education
  • 27. Por que modelar? Ajuda a entender o problema; Nos faz pensar antes de fazer; Facilita a comunicação com o usuário; Globalcode – Open4education
  • 28. 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
  • 29. Como fazer? Comece pelo mais importante (comece pelo pior); Globalcode – Open4education
  • 30. Como fazer? Comece pelo mais importante (comece pelo pior); UML; Globalcode – Open4education
  • 31. Como fazer? Comece pelo mais importante (comece pelo pior); UML; Ferramentas case (Ex. Entreprise Architect); Globalcode – Open4education
  • 32. Como fazer? Comece pelo mais importante (comece pelo pior); UML; Ferramentas case (Ex. Entreprise Architect); Papel e caneta também servem. Globalcode – Open4education
  • 33. Ex.: Diagrama de classes Globalcode – Open4education
  • 34. Fazer código, finalmente! Globalcode – Open4education
  • 35. Fazer código, finalmente! TDD (Test Driven Development) Globalcode – Open4education
  • 36. Fazer código, finalmente! TDD (Test Driven Development) Escreva um teste; Globalcode – Open4education
  • 37. Fazer código, finalmente! TDD (Test Driven Development) Escreva um teste; Faça-o funcionar; Globalcode – Open4education
  • 38. Fazer código, finalmente! TDD (Test Driven Development) Escreva um teste; Faça-o funcionar; Refatore. Globalcode – Open4education
  • 39. 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
  • 40. 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
  • 41. Separando as coisas Globalcode – Open4education
  • 42. Separando as coisas Globalcode – Open4education
  • 43. Ciclo contínuo Globalcode – Open4education
  • 44. Ciclo contínuo A cada novo release: Globalcode – Open4education
  • 45. Ciclo contínuo A cada novo release: Adicionamos novas funcionalidades; Globalcode – Open4education
  • 46. Ciclo contínuo A cada novo release: Adicionamos novas funcionalidades; Refatoramos uma parte do código legado; Globalcode – Open4education
  • 47. Ciclo contínuo A cada novo release: Adicionamos novas funcionalidades; Refatoramos uma parte do código legado; Mantemos a documentação. Globalcode – Open4education
  • 48. Perguntas? Globalcode – Open4education