REFACTOR 
leonardo amarilho 
github.com/leopoa
Objetivo 
Tornar o software 
mais fácil de 
compreender 
e modificar.
Alguns erros comuns 
Alterar Funcionalidade 
Otimização de desempenho
Alterar Funcionalidade 
Comportamento do 
software não pode ser 
alterado após a refatoração
Otimização de desempenho 
Normalmente altera a estrutura e muitas vezes 
torna o código mais difícil de entender.
Benefícios 
● Qualidade 
● Entendimento 
● Encontrar erros
Entendimento 
Refatoração ajuda a 
tornar o código 
mais legível
Qualidade 
Ajuda a projetar e 
manter o software 
com bom design 
e código limpo
Dificuldade no trabalho? 
Programas que são 
difíceis de ler são 
difíceis de modificar
Dificuldade no trabalho? 
Código mal projetado 
geralmente leva mais 
código para fazer as 
mesmas coisas
Dificuldade no trabalho? 
Programas com lógica 
condicional complexa são 
difíceis de modificar.
Quando devo fazer?
Sempre que possível!
Alguns exemplos 
● Adicionar Função 
● Corrigir um erro 
● Code review
Adicionar Função 
Refatorar o código, 
pode ajudar no 
entendimento
Corrigir um erro 
Código não estava claro 
suficiente para você 
perceber o problema
Alerta 
Não ter tempo suficiente 
devido complexidade, é 
geralmente um sinal de 
que você precisa fazer 
alguma refatoração
Kent Beck 
"Eu não sou um 
grande programador, 
eu sou apenas um 
bom programador 
com ótimos hábitos."
leonardo amarilho 
github.com/leopoa

Mais conteúdo relacionado

PDF
Clean code 101 do caos ao nirvana em poucos passos
PPTX
Suporte a macros na sua aplicação com PowerShell
PPTX
11. Edição do Vídeo
PPT
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
PDF
Introdução ao TDD nas soluções Global AppCasting
PDF
BDD não é automação de teste - Scrum Gathering
PDF
BDD não é Automação de Testes
PDF
Cafe agil em Recife - Agile and Design
Clean code 101 do caos ao nirvana em poucos passos
Suporte a macros na sua aplicação com PowerShell
11. Edição do Vídeo
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
Introdução ao TDD nas soluções Global AppCasting
BDD não é automação de teste - Scrum Gathering
BDD não é Automação de Testes
Cafe agil em Recife - Agile and Design

Mais procurados (10)

PPTX
Construindo software em segurança com BDD
PDF
O que Evitar na Escrita de Criterios de Aceite
PDF
Revisão de Código - Uma prática que depende da cultura
PDF
DevOps - Por onde começar
PDF
Geek night-2015
PPT
Publicando vídeo do you tube em seu blog (blogger)
PDF
Altair Sossai - A Importância de Testes Unitários nas Aplicações
PPTX
Automação de Testes de Software (Campus Party)
PPTX
TDD em 3 slides para dojos
PPT
Scrum, Agilismo e Boas Práticas
Construindo software em segurança com BDD
O que Evitar na Escrita de Criterios de Aceite
Revisão de Código - Uma prática que depende da cultura
DevOps - Por onde começar
Geek night-2015
Publicando vídeo do you tube em seu blog (blogger)
Altair Sossai - A Importância de Testes Unitários nas Aplicações
Automação de Testes de Software (Campus Party)
TDD em 3 slides para dojos
Scrum, Agilismo e Boas Práticas
Anúncio

Destaque (6)

PDF
Algumas práticas para desenvolvedores
PDF
currying vs partial application
PDF
Principles Desing in functional perspective
PDF
Functional - Fundamentals and Perspective Functional vs OO
PDF
Teoria das janelas quebradas - Pragmatic Programmer
PDF
list comprehension
Algumas práticas para desenvolvedores
currying vs partial application
Principles Desing in functional perspective
Functional - Fundamentals and Perspective Functional vs OO
Teoria das janelas quebradas - Pragmatic Programmer
list comprehension
Anúncio

Semelhante a Refatoração (20)

PDF
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
PDF
Aula 4- Engenharia de Software
PPT
Refactory Worshop
PDF
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
PPT
Práticas de Desenvolvimento de Software
PPT
Tdd On Rails
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
KEY
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
PPT
Padrões Web & Code Standard
DOC
Aula de C para Linux
PDF
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
PDF
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
PPTX
Programe a eficácia do seu código
PDF
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
PPTX
Test-Driven Development - Introdução
PDF
Paradigmas de Linguagens de Programação - Introdução
PDF
Tradução de Aplicativos Livres
PDF
Teste de software
PDF
Como se tornar o pior programador PHP do mundo
PPTX
Clean Code: Por um mundo com códigos melhores - SETI 2017
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Aula 4- Engenharia de Software
Refactory Worshop
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
Práticas de Desenvolvimento de Software
Tdd On Rails
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Padrões Web & Code Standard
Aula de C para Linux
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
Programe a eficácia do seu código
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Test-Driven Development - Introdução
Paradigmas de Linguagens de Programação - Introdução
Tradução de Aplicativos Livres
Teste de software
Como se tornar o pior programador PHP do mundo
Clean Code: Por um mundo com códigos melhores - SETI 2017

Último (13)

PDF
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
PPT
00_Apresentacao sobre o livro do sommerville_ES.ppt
PPT
09_Evolucao de software e_Refatoracao.ppt
PPT
03_slide de Gerenciamento de Projetos .ppt
PPT
10_ slides de Reuso sommerville cap 10.ppt
PDF
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
PPT
06_slide de Arquitetura_de_Software .ppt
PPT
05_slide especificacao de sistemas de software e a uml UML.ppt
PDF
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
PPT
04_slide Requisitos de software_capitulo4
PDF
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
PDF
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
PPT
07_slides de Estilos_Arquiteturais sommerville.ppt
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
00_Apresentacao sobre o livro do sommerville_ES.ppt
09_Evolucao de software e_Refatoracao.ppt
03_slide de Gerenciamento de Projetos .ppt
10_ slides de Reuso sommerville cap 10.ppt
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
06_slide de Arquitetura_de_Software .ppt
05_slide especificacao de sistemas de software e a uml UML.ppt
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
04_slide Requisitos de software_capitulo4
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
07_slides de Estilos_Arquiteturais sommerville.ppt

Refatoração

Notas do Editor

  • #8: refatoração para me ajudar a entender o código desconhecido
  • #9: Mal projetado você gasta tempo a encontrar e corrigir bugs em vez de adicionar nova função.
  • #11: As alterações demorar pq precisa entender o sistema e encontrar o código duplicado. Os novos recursos precisam de mais codificação pra remendar ou duplicar