SlideShare une entreprise Scribd logo
1  sur  71
Télécharger pour lire hors ligne
Refatorar!
Porque ninguém gosta de código que cheira mal
@andreitognolo
github.com/elsouza
eliaslsouza@gmail.com
"Um bom desenvolvedor consegue entender
qualquer código.”
(Anônimo)
"Um bom programador consegue escrever
código que qualquer um entende"
(Outro anônimo, mais sábio)
Human-Readable Code
Calendar cal = new Calendar.getInstance();
cal.set(Calendar.YEAR, 2012);
cal.set(Calendar.MONTH, CALENDAR.NOVEMBER);
cal.set(Calendar.DAY, 20);
Date data = cal.getTime();
System.out.println(data);
Fonte: Refactoring to Patterns (by Joshua Kerievsky)
Date data = geraData(15, Calendar.DECEMBER, 2013);
System.out.println(data);
Segundos! São apenas segundos!Segundos! São apenas segundos!
Você acha que você sempre faz um
código bom?
Você acha que a gentesempre faz um
código bom?
Saca só
Saca só:
/elsouza
if (!StringUtils.isNullOrEmpty(texto)
&& !texto.equals("")) {
//...
}
itemDePauta.adicionaValor(
"campo" +
++posicaoCampoNaTabela,
texto.replaceAll("", "")
.replaceAll("n", "")
.trim());
O que fazer então?
Sempre refatorar
?
Parte I
Como eu consigo tempo para refatorar?
100 joao if (...) {
100 joao if (...)
100 joao resultado = 1;
100 joao if (...)
100 joao resultado = 2;
150 joaquim if (...)
150 joaquim resultado = 3;
100 joao }
"The single most important trait of a professional programmer
is personal responsibility [...]. A professional
programmer does not pass
that responsibility off
on others".
(Uncle Bob)
Tem refatoração que não da
problema...
if (!StringUtils.isNullOrEmpty(texto)
&& !texto.equals("")) {
//...
}
if (!StringUtils.isNullOrEmpty(texto)) {
//...
}
itemDePauta.adicionaValor(
"campo" +
++posicaoCampoNaTabela,
texto.replaceAll("", "")
.replaceAll("n", "")
.trim());
itemDePauta.adicionaValor(
"campo" +
++posicaoCampoNaTabela,
texto.replaceAll("n", "")
.trim());
E isso é ainda mais verdade
se você utilizar as
ferramentas de
refatoração de sua
IDE
sempre que você modifica
algo em um método, você
tem que deixar ele melhor
do que encontrou
Moral da história
Ah, mas e quando tenho que
alterar uma funcionalidade já
existente, como eu faço?
#1
Tem teste?
Não...
Escrever teste
Implementar
E quando o código já existe, funciona e
eu quero melhorar?
O que é refatorar?
"é o processo de modificar
um sistema de software para
melhorar a estrutura interna
do código sem alterar
seu comportamento
externo"
Wikipedia
Alterar código que existe e
funciona?
Se eu tenho cobertura de testes,
eu sou corajoso
Escrever teste
Refatorar
Eu começo a refatorar pelo mesmo caminho
que eu começo a implementar: o TESTE
Escrever
teste
Implementar
Escrever
teste
Refatorar
Escrever teste
Implementa nova funcionalidade
Refatora o que acabou de desenvolver
Refatora o que já existe
Pequenas refatorações a cada momento
Não existem refatorações
monstruosas sem pequenos passos
Passos consistentes
Parte II
Técnicas de refatoração
O que refatorar?
Code Smells
Código duplicado
Código duplicado
if (temComplexidadeCondicional){
codigo = "Meu deus, como cheira mal";
} else {
codigo = "Legal!";
}
● Sistema de vendas
● Cada venda tem itens
● O valor total da venda é a soma dos itens
● Uma venda pode ser parcelada
● Se a venda for parcelada ela pode ter juros
Cenário
Métodolongo
Complexidade
condicional
Métodolongo
Complexidade
condicional
Princípio da
responsabilidade
única (Classe enorme)
Métodolongo
(clique para ver o vídeo)
1. Criar classe VendaAPrazo e VendaAVista
2. Introduce Factory (roda teste)
3. Alterar o método factory (roda teste)
4. Classe Venda abstract
5. Extract Method calcularJuros (roda teste)
6. CalcularJuros na VendaAVista, retornar 1 (roda teste)
7. CalcularJuros na VendaAPrazo, fazer conta (roda teste)
8. CalcularJuros na Venda como abstract (roda teste)
9. Tirar a factory (?)
Roteiro
(clique para ver o vídeo)
Resumo
● Ser responsável de verdade pelo seu código
● Você não vai ter tempo/dinheiro para uma refatoração grande
● Pequenos passos, passos consistentes
● Refatorando continuamente
● Saber identificar os smells é o primeiro passo
● Conhecer as técnicas de refatoração é essencial
Onde saber mais?
Refatorar código para melhorar a qualidade

Contenu connexe

Tendances

Windows xp original
Windows xp originalWindows xp original
Windows xp originaljorsam2013
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Better Developer
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Rômulo Augusto Santos
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizadosBreno Oliveira
 
Testes em um mundo ágil
Testes em um mundo ágilTestes em um mundo ágil
Testes em um mundo ágilJose Papo, MSc
 
WebCamps Software Testing
WebCamps Software TestingWebCamps Software Testing
WebCamps Software TestingRodrigo Vidal
 
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Robson Bittencourt
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarBetter Developer
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
 

Tendances (20)

Windows xp original
Windows xp originalWindows xp original
Windows xp original
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
Postgres Chainsaw Massacre
Postgres Chainsaw MassacrePostgres Chainsaw Massacre
Postgres Chainsaw Massacre
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizados
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Testes em um mundo ágil
Testes em um mundo ágilTestes em um mundo ágil
Testes em um mundo ágil
 
WebCamps Software Testing
WebCamps Software TestingWebCamps Software Testing
WebCamps Software Testing
 
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudar
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
PostgreSQL Wonderland TDC-SP 2015
PostgreSQL Wonderland TDC-SP 2015PostgreSQL Wonderland TDC-SP 2015
PostgreSQL Wonderland TDC-SP 2015
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 
Visão geral type script
Visão geral type scriptVisão geral type script
Visão geral type script
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 
TDD
TDDTDD
TDD
 

En vedette

Só rindo mesmo
Só rindo mesmoSó rindo mesmo
Só rindo mesmoKadu
 
Turistas em senas engraçadas
Turistas em senas engraçadasTuristas em senas engraçadas
Turistas em senas engraçadasKadu
 
DevCamp 2014 - Formando times ágeis. Da contratação à demissão.- Thiago F. Me...
DevCamp 2014 - Formando times ágeis. Da contratação à demissão.- Thiago F. Me...DevCamp 2014 - Formando times ágeis. Da contratação à demissão.- Thiago F. Me...
DevCamp 2014 - Formando times ágeis. Da contratação à demissão.- Thiago F. Me...DevCamp Campinas
 
BDD - JBehave + SeleniumHQ + PhantomJS + Fixture Factory
BDD - JBehave + SeleniumHQ + PhantomJS  + Fixture FactoryBDD - JBehave + SeleniumHQ + PhantomJS  + Fixture Factory
BDD - JBehave + SeleniumHQ + PhantomJS + Fixture FactoryAndre Vinicius Buzzo
 
Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013
Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013
Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013Luca Bastos
 
Y, Z, Millennials... A polêmica de uma geração e o que podemos aprender com ela
Y, Z, Millennials... A polêmica de uma geração e o que podemos aprender com elaY, Z, Millennials... A polêmica de uma geração e o que podemos aprender com ela
Y, Z, Millennials... A polêmica de uma geração e o que podemos aprender com elaTatiana Garcia Loth
 
DevCamp 2013 :: O Mito do Desenvolvedor 10x
DevCamp 2013 :: O Mito do Desenvolvedor 10xDevCamp 2013 :: O Mito do Desenvolvedor 10x
DevCamp 2013 :: O Mito do Desenvolvedor 10xBill Coutinho
 
O dia a dia de uma Startup
O dia a dia de uma StartupO dia a dia de uma Startup
O dia a dia de uma StartupDaniel Cukier
 
To Remoto. Tá tranquilo? Tá favorável?
To Remoto. Tá tranquilo? Tá favorável?To Remoto. Tá tranquilo? Tá favorável?
To Remoto. Tá tranquilo? Tá favorável?Matheus Costa
 
Testes de Carga Flexíveis e Escaláveis para Estratégias Ágeis
Testes de Carga Flexíveis e Escaláveis para Estratégias ÁgeisTestes de Carga Flexíveis e Escaláveis para Estratégias Ágeis
Testes de Carga Flexíveis e Escaláveis para Estratégias ÁgeisPedro Artiga
 
Palestra Zero to Hero - Startups com Tech Founders
Palestra Zero to Hero - Startups com Tech FoundersPalestra Zero to Hero - Startups com Tech Founders
Palestra Zero to Hero - Startups com Tech FoundersGuilherme Junqueira
 
Da garagem ao mercado como tornar ambientes inteligentes utilizando dispositi...
Da garagem ao mercado como tornar ambientes inteligentes utilizando dispositi...Da garagem ao mercado como tornar ambientes inteligentes utilizando dispositi...
Da garagem ao mercado como tornar ambientes inteligentes utilizando dispositi...Kadu
 
De São Paulo a Sidney, Ágil em times distribuídos - TDC2016
De São Paulo a Sidney, Ágil em times distribuídos - TDC2016De São Paulo a Sidney, Ágil em times distribuídos - TDC2016
De São Paulo a Sidney, Ágil em times distribuídos - TDC2016André Suman Pereira
 
DevOps: Continous Delivery - Como os feedbacks são importantes
DevOps: Continous Delivery - Como os feedbacks são importantesDevOps: Continous Delivery - Como os feedbacks são importantes
DevOps: Continous Delivery - Como os feedbacks são importantesErik Etsushi Miyashita
 
Product Management de Desenvolvedor para Desenvolvedor
Product Management de Desenvolvedor para DesenvolvedorProduct Management de Desenvolvedor para Desenvolvedor
Product Management de Desenvolvedor para DesenvolvedorPaulo Silveira
 
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph YoderTesting System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph YoderJoseph Yoder
 
Recomendação de conteúdo com apache mahout
Recomendação de conteúdo com apache mahoutRecomendação de conteúdo com apache mahout
Recomendação de conteúdo com apache mahoutDextra
 
Classificação de documentos
Classificação de documentosClassificação de documentos
Classificação de documentosDextra
 
Gestão Ágil com Management 3.0
Gestão Ágil com Management 3.0Gestão Ágil com Management 3.0
Gestão Ágil com Management 3.0André Faria Gomes
 

En vedette (20)

Só rindo mesmo
Só rindo mesmoSó rindo mesmo
Só rindo mesmo
 
Turistas em senas engraçadas
Turistas em senas engraçadasTuristas em senas engraçadas
Turistas em senas engraçadas
 
DevCamp 2014 - Formando times ágeis. Da contratação à demissão.- Thiago F. Me...
DevCamp 2014 - Formando times ágeis. Da contratação à demissão.- Thiago F. Me...DevCamp 2014 - Formando times ágeis. Da contratação à demissão.- Thiago F. Me...
DevCamp 2014 - Formando times ágeis. Da contratação à demissão.- Thiago F. Me...
 
BDD - JBehave + SeleniumHQ + PhantomJS + Fixture Factory
BDD - JBehave + SeleniumHQ + PhantomJS  + Fixture FactoryBDD - JBehave + SeleniumHQ + PhantomJS  + Fixture Factory
BDD - JBehave + SeleniumHQ + PhantomJS + Fixture Factory
 
Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013
Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013
Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013
 
Y, Z, Millennials... A polêmica de uma geração e o que podemos aprender com ela
Y, Z, Millennials... A polêmica de uma geração e o que podemos aprender com elaY, Z, Millennials... A polêmica de uma geração e o que podemos aprender com ela
Y, Z, Millennials... A polêmica de uma geração e o que podemos aprender com ela
 
DevCamp 2013 :: O Mito do Desenvolvedor 10x
DevCamp 2013 :: O Mito do Desenvolvedor 10xDevCamp 2013 :: O Mito do Desenvolvedor 10x
DevCamp 2013 :: O Mito do Desenvolvedor 10x
 
O dia a dia de uma Startup
O dia a dia de uma StartupO dia a dia de uma Startup
O dia a dia de uma Startup
 
To Remoto. Tá tranquilo? Tá favorável?
To Remoto. Tá tranquilo? Tá favorável?To Remoto. Tá tranquilo? Tá favorável?
To Remoto. Tá tranquilo? Tá favorável?
 
Testes de Carga Flexíveis e Escaláveis para Estratégias Ágeis
Testes de Carga Flexíveis e Escaláveis para Estratégias ÁgeisTestes de Carga Flexíveis e Escaláveis para Estratégias Ágeis
Testes de Carga Flexíveis e Escaláveis para Estratégias Ágeis
 
Palestra Zero to Hero - Startups com Tech Founders
Palestra Zero to Hero - Startups com Tech FoundersPalestra Zero to Hero - Startups com Tech Founders
Palestra Zero to Hero - Startups com Tech Founders
 
Da garagem ao mercado como tornar ambientes inteligentes utilizando dispositi...
Da garagem ao mercado como tornar ambientes inteligentes utilizando dispositi...Da garagem ao mercado como tornar ambientes inteligentes utilizando dispositi...
Da garagem ao mercado como tornar ambientes inteligentes utilizando dispositi...
 
Crafting software
Crafting softwareCrafting software
Crafting software
 
De São Paulo a Sidney, Ágil em times distribuídos - TDC2016
De São Paulo a Sidney, Ágil em times distribuídos - TDC2016De São Paulo a Sidney, Ágil em times distribuídos - TDC2016
De São Paulo a Sidney, Ágil em times distribuídos - TDC2016
 
DevOps: Continous Delivery - Como os feedbacks são importantes
DevOps: Continous Delivery - Como os feedbacks são importantesDevOps: Continous Delivery - Como os feedbacks são importantes
DevOps: Continous Delivery - Como os feedbacks são importantes
 
Product Management de Desenvolvedor para Desenvolvedor
Product Management de Desenvolvedor para DesenvolvedorProduct Management de Desenvolvedor para Desenvolvedor
Product Management de Desenvolvedor para Desenvolvedor
 
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph YoderTesting System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
 
Recomendação de conteúdo com apache mahout
Recomendação de conteúdo com apache mahoutRecomendação de conteúdo com apache mahout
Recomendação de conteúdo com apache mahout
 
Classificação de documentos
Classificação de documentosClassificação de documentos
Classificação de documentos
 
Gestão Ágil com Management 3.0
Gestão Ágil com Management 3.0Gestão Ágil com Management 3.0
Gestão Ágil com Management 3.0
 

Similaire à Refatorar código para melhorar a qualidade

TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - JavaneirosTestes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - JavaneirosRenan Siravegna
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Javaalexmacedo
 
Como usar IA para melhorar a qualidade do seu código
Como usar IA para melhorar a qualidade do seu códigoComo usar IA para melhorar a qualidade do seu código
Como usar IA para melhorar a qualidade do seu códigoEvandro da Silva Amparo
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developingRenato Oliveira
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 
Boas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareBoas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareivanassisleal
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
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
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaTestes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaAlex Tercete
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 

Similaire à Refatorar código para melhorar a qualidade (20)

Testes de software de A a Z
Testes de software de A a ZTestes de software de A a Z
Testes de software de A a Z
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - JavaneirosTestes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
Como usar IA para melhorar a qualidade do seu código
Como usar IA para melhorar a qualidade do seu códigoComo usar IA para melhorar a qualidade do seu código
Como usar IA para melhorar a qualidade do seu código
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Anti-patterns
Anti-patternsAnti-patterns
Anti-patterns
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
1° Madrugada de Testes
1° Madrugada de Testes1° Madrugada de Testes
1° Madrugada de Testes
 
Boas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareBoas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_software
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
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...
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaTestes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-dia
 
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
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 

Refatorar código para melhorar a qualidade