SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Mantendo a plenitude do seu novo
legado através de code-refactoring
The Developer’s Conference 2019
EDUARDO CESAR
Arquiteto de software - ZARP
Refactoring is a controlled technique for
improving the design of an existing code base.
Its essence is applying a series of small
behavior-preserving transformations
LOGO, REFATORAR...
Mas por que refatoramos?
Tornar fácil adicionar novo código
Melhorar projeto de código
existente
Obter melhor entendimento
do código
Débito de projeto
Refatorações compostas
e
Refatorações dirigidas por teste
Refatoração composta
“Inicia-se com um trecho de código que se deseja
modificar, e então, incrementalmente são aplicadas
diversas refatorações de baixo nível até que uma
mudança desejada tenha ocorrido…”
(Joshua Kerievsky)
Refatoração dirigida por testes
“Refatorações que envolvam alteração de lógica como
por exemplo substituir algoritmo, são melhores
implementadas utilizando refatoração dirigidas por
testes…”
(Joshua Kerievsky)
T
E
S
T
E
S
REFATORAÇÃO COMPOSTA REFATORAÇÃO DIRIGIDA
POR TESTES
E o que é “code smell” ?
“Firstly a smell is by definition something that's
quick to spot - or sniffable as I've recently put it.
A long method is a good example of this…”
(MARTIN FOWLER)
Alguns codes smells conhecidos
Long Method
Large Class
Duplicate Code
Dead Code
Long Parameter List
Entre outros…
https://sourcemaking.com/refactoring/smells
Algumas técnicas de refatoração
Extract Method
Extract Method
DECOMPOSE CONDITIONAL
DECOMPOSE CONDITIONAL
DECOMPOSE CONDITIONAL
Substitute Algorithm
Substitute Algorithm
Conheça design de software e técnicas para
uma boa codificação
PRINCÍPIOS S.O.L.I.D
CLEAN CODE
OBJECT CALISTHENICS
DESIGN PATTERNS
REESCREVER OU REFATORAR ???
oDevemos sempre avaliar os impactos de ambas
as decisões, cada problema irá ditar
qual a melhor estratégia...
REFERÊNCIAS
https://amzn.to/2zTdeI9
https://amzn.to/2QtWCMs
https://bit.ly/2E0BGv5
https://bit.ly/1YhvHUb
https://bit.ly/1m9vQs5
OBRIGADO A TODOS!
EDUARDO CESAR
github.com/bolinha1
/in/eduardo-cesar-oliveira
eduardo.oliveira@zarpsystem.com.br
www.zarpsystem.com.br
ESTAMOS CONTRATANDO!!!

Mais conteúdo relacionado

Semelhante a refactoring-codigo-melhorar-design

Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
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
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...Rafael Prallon
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Maurício Aniche
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsMichel Cordeiro
 
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADEREFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADEAlexsander Camargo
 
Determine quanto do seu código é testado com Code Coverage
Determine quanto do seu código é testado com Code CoverageDetermine quanto do seu código é testado com Code Coverage
Determine quanto do seu código é testado com Code CoverageThiago Meuser
 
Padrões Web & Code Standard
Padrões Web & Code StandardPadrões Web & Code Standard
Padrões Web & Code StandardToni Albuquerque
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013André Borgonovo
 
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
 
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
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 

Semelhante a refactoring-codigo-melhorar-design (20)

Automatização - DevOps
Automatização - DevOpsAutomatização - DevOps
Automatização - DevOps
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
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
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
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
 
Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...
 
Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkins
 
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADEREFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
 
Determine quanto do seu código é testado com Code Coverage
Determine quanto do seu código é testado com Code CoverageDetermine quanto do seu código é testado com Code Coverage
Determine quanto do seu código é testado com Code Coverage
 
Padrões Web & Code Standard
Padrões Web & Code StandardPadrões Web & Code Standard
Padrões Web & Code Standard
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
 
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 ...
 
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 ...
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 

Mais de Eduardo Cesar

Uma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devUma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devEduardo Cesar
 
OOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosOOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosEduardo Cesar
 
Arquitetando aplicações php
Arquitetando aplicações phpArquitetando aplicações php
Arquitetando aplicações phpEduardo Cesar
 
Arquitetando sistemas PHP
Arquitetando sistemas PHPArquitetando sistemas PHP
Arquitetando sistemas PHPEduardo Cesar
 
Desbabravando linguagem GO
Desbabravando linguagem GODesbabravando linguagem GO
Desbabravando linguagem GOEduardo Cesar
 
Integrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesIntegrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesEduardo Cesar
 
Desenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPDesenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPEduardo Cesar
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webEduardo Cesar
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis LaravelEduardo Cesar
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoEduardo Cesar
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservicoEduardo Cesar
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPEduardo Cesar
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesEduardo Cesar
 

Mais de Eduardo Cesar (13)

Uma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devUma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia dev
 
OOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosOOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodos
 
Arquitetando aplicações php
Arquitetando aplicações phpArquitetando aplicações php
Arquitetando aplicações php
 
Arquitetando sistemas PHP
Arquitetando sistemas PHPArquitetando sistemas PHP
Arquitetando sistemas PHP
 
Desbabravando linguagem GO
Desbabravando linguagem GODesbabravando linguagem GO
Desbabravando linguagem GO
 
Integrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesIntegrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservices
 
Desenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPDesenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHP
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na web
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis Laravel
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnico
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservico
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHP
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro services
 

refactoring-codigo-melhorar-design