SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Globalcode – Open4education 
Refatorar é Preciso! 
Daniel Archer
Globalcode – Open4education 
Quem vos fala 
Daniel Archer 
Formado em Análise de Sistemas 
Programador PHP há 5 anos 
E eu também escrevo código Ruim...
Globalcode – Open4education 
Quem aqui escreve um bom código?
Globalcode – Open4education 
Refactoring 
Refactoring: a change made to the internal structure of 
software to make it easier to understand and cheaper to 
modify without changing its observable behavior. 
• Martin Fowler
Globalcode – Open4education 
Refactoring
Globalcode – Open4education 
Problemas Enfrentados 
Dificuldade de Entendimento 
Alto acoplamento 
Manutenção perigosa 
Produtividade reduzida
Globalcode – Open4education 
Ferramentas 
Clean Code 
Object Calisthenics 
Princípios SOLID 
Design Patterns
Globalcode – Open4education 
Conceitos Básicos 
Clean Code 
Clean code can be read, and enhanced by a 
developer other than its original author. 
(Dave A. Thomas, OTI Founder) 
Clean code is simple and direct 
(Grady Booch, author of Object Oriented Analysis and Design with Applications)
Globalcode – Open4education
Globalcode – Open4education 
Conceitos Básicos 
Object Calisthenic 
Um nível de indentação por método 
Não utilize else 
Encapsule os tipos primitivos 
Apenas um -> por linha 
Não Abrevie 
Mantenha suas classes Pequenas 
Limite o número de atributos (2~5) 
Utilize coleções 
Use Getters e Setters
Globalcode – Open4education 
Conceitos Básicos 
Princípios SOLID 
S ingle Responsability 
O pen / Closed 
L iskov Subtitution 
I nterface Segregation 
D ependency Injection
Globalcode – Open4education 
Vamos ver na prática... 
Como identificar e tomar a melhor decisão.
Globalcode – Open4education 
Refatoração - Interna 
Mantenha a mesma interface 
Sinalize métodos depreciados 
Teste
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education 
Refatoração - Estruturada 
Nem sempre teremos um código 
minimamente orientado a objetos 
Mapeie as relações 
Procure por dependências desta página em outros 
arquivos 
Agrupe as Classes em Namespaces ou 
Pastas (v.5.2-)
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education 
Refatoração - Diretórios 
Defina qual o objetivo final 
Documente o que for alterado 
Altere apenas o necessário 
Não tenha pressa 
Defina Etapas
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education 
Refatoração - Objetos 
Inicie pelos métodos de menor complexidade 
Informe a equipe sobre a mudança na 
interface de alguma classe. 
Siga os padrões especificados 
Dica de ouro: converse com a sua equipe 
antes.
Globalcode – Open4education 
Ouça as opiniões 
Mesmo dentro de um grupo de desenvolvedores, 
dependemos da aceitação da equipe para que as 
mudanças sejam bem sucedidas.
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education 
Esqueça o padrão Singleton 
A maior parte das atuais atribuições do padrão singleton 
está relacionada a problemas no design
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education 
Acredite em outras ferramentas. 
Reuse! 
Não tente reinventar a roda
Globalcode – Open4education
Globalcode – Open4education

Mais conteúdo relacionado

Mais procurados

Conheça Visual Studio IntelliCode e Visual Studio Live Share
Conheça Visual Studio IntelliCode e Visual Studio Live ShareConheça Visual Studio IntelliCode e Visual Studio Live Share
Conheça Visual Studio IntelliCode e Visual Studio Live ShareLetticia Nicoli
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...Joberto Diniz
 
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?Weverton Timoteo
 
TDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e featureTDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e featuretdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Lei de Demeter parte
Lei de Demeter parteLei de Demeter parte
Lei de Demeter parteJorge Oleques
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Renato Groff
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
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 2018Ernesto Barbosa
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012Jorge Oleques
 
Service virtualization floripa
Service virtualization floripaService virtualization floripa
Service virtualization floripaErnesto Barbosa
 

Mais procurados (20)

Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Conheça Visual Studio IntelliCode e Visual Studio Live Share
Conheça Visual Studio IntelliCode e Visual Studio Live ShareConheça Visual Studio IntelliCode e Visual Studio Live Share
Conheça Visual Studio IntelliCode e Visual Studio Live Share
 
O que devo procurar em um code review
O que devo procurar em um code review O que devo procurar em um code review
O que devo procurar em um code review
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
 
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
TDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e featureTDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e feature
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Clean code v3
Clean code v3Clean code v3
Clean code v3
 
Lei de Demeter parte
Lei de Demeter parteLei de Demeter parte
Lei de Demeter parte
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
Bdd&tdd
Bdd&tddBdd&tdd
Bdd&tdd
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
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
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012
 
Service virtualization floripa
Service virtualization floripaService virtualization floripa
Service virtualization floripa
 

Semelhante a Refactor código PHP

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
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
 
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 FlowRicardo Longa
 
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
 
F# para devs c# tdc
F# para devs c#   tdcF# para devs c#   tdc
F# para devs c# tdcLucas Teles
 
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 ágeisCristiano Caetano
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP Domingos Teruel
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015Bruno Murawski
 
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 Ittdc-globalcode
 
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 timeDécio Heinzelmann Luckow
 
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 saberCamilo Lopes
 
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 palestraRafael Chaves
 
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 .NETGabriel Schade Cardoso
 
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.0tdc-globalcode
 
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
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
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 MVCWaldyr Felix
 
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...Allan Ferreira
 

Semelhante a Refactor código PHP (20)

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
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...
 
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
 
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#
 
F# para devs c# tdc
F# para devs c#   tdcF# para devs c#   tdc
F# para devs c# tdc
 
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
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015
 
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
 
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
 
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
 
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
 
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
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
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
 
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#
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
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 SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
 

Mais de Daniel Archer Marques Cramer (10)

Filas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQFilas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQ
 
Monitorando aplicações com Prometheus
Monitorando aplicações com PrometheusMonitorando aplicações com Prometheus
Monitorando aplicações com Prometheus
 
Over engineering
Over engineeringOver engineering
Over engineering
 
Frameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghostFrameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghost
 
Case Kinghost + Elasticsearch
Case Kinghost + ElasticsearchCase Kinghost + Elasticsearch
Case Kinghost + Elasticsearch
 
Aplicando SOLID com PHP7
Aplicando SOLID com PHP7Aplicando SOLID com PHP7
Aplicando SOLID com PHP7
 
Php on the cloud
Php on the cloudPhp on the cloud
Php on the cloud
 
PHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHPPHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHP
 
PHP Além da universidade
PHP Além da universidadePHP Além da universidade
PHP Além da universidade
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 

Refactor código PHP