SlideShare uma empresa Scribd logo
1 de 27
Saia do Brownfield
Com Refactoring
egomesbrandao
 33 anos
 Desenvolvedor de software
 www.egomesbrandao.net/blog
 twitter.com/egomesbrandao
 linkedin.com/in/egomesbrandao
 github.com/egomesbrandao
 bitbucket.org/egomesbrandao
 shelfari.com/egomesbrandao
Greenfield
Brownfield
Pareto
Você cozinha?
Conseguiria aqui?
M. Golding
“Always code as if the guy
who ends up maintaining
your code will be a violent
psychopath who knows
where you live”
A janela quebrada
Você sentiu... Code Smell?
Refactoring
Explore com testes
Feathers
e o risco da mudança:
Quais as mudanças que temos que
fazer?
Como vamos saber que fizemos
corretamente?
E como vamos saber se não
quebramos nada?
Grace Hopper
“It’s easier to beg
forgiveness than to
ask permission.”,
Grace Hopper
Já era hora...
Demo!(pelo menos um kata)
#comemocao
E não o contrário
Medo?
"Humans are allergic to
change. They love to say,
'We've always done it this
way.' I try to fight that. That's
why I have a clock on my wall
that runs counter-clockwise.",
Grace Hopper
Para saber mais
Mais?
Obrigado!

Mais conteúdo relacionado

Mais de Emmanuel Gomes Brandão

Mais de Emmanuel Gomes Brandão (11)

7Masters - Automação de testes
7Masters - Automação de testes7Masters - Automação de testes
7Masters - Automação de testes
 
DevOps em Enterprises: problemas
DevOps em Enterprises: problemasDevOps em Enterprises: problemas
DevOps em Enterprises: problemas
 
Jornada para o DevOps
Jornada para o DevOpsJornada para o DevOps
Jornada para o DevOps
 
Three ways a base do DevOps no VSTS
Three ways a base do DevOps no VSTSThree ways a base do DevOps no VSTS
Three ways a base do DevOps no VSTS
 
DevOps: Muito mais cultura do que ferramentas
DevOps: Muito mais cultura do que ferramentasDevOps: Muito mais cultura do que ferramentas
DevOps: Muito mais cultura do que ferramentas
 
DevOps Mitos, Cultura e Futuro
DevOps Mitos, Cultura e FuturoDevOps Mitos, Cultura e Futuro
DevOps Mitos, Cultura e Futuro
 
DevOps (Provocações)
DevOps (Provocações)DevOps (Provocações)
DevOps (Provocações)
 
Git Rebase, reescrevendo o seu histórico
Git Rebase, reescrevendo o seu históricoGit Rebase, reescrevendo o seu histórico
Git Rebase, reescrevendo o seu histórico
 
Integrando Jenkins em um pipeline com VSTS... e Azure
Integrando Jenkins em um pipeline com VSTS... e AzureIntegrando Jenkins em um pipeline com VSTS... e Azure
Integrando Jenkins em um pipeline com VSTS... e Azure
 
Brownfield applications: dicas, técnicas e experiências
Brownfield applications: dicas, técnicas e experiênciasBrownfield applications: dicas, técnicas e experiências
Brownfield applications: dicas, técnicas e experiências
 
MS Enterprise Library
MS Enterprise LibraryMS Enterprise Library
MS Enterprise Library
 

Refactorize código legado com testes e refactoring

Notas do Editor

  1. Você vai estar 80% da sua vida profissional em softwares existentes Baseado nas estimativas do Gartner 80% do tempo em código Brownfield
  2. Você já sentiu vontade de torcer o pescoço de um colega que talvez você nem saiba quem é? Pode ter sido seu atual chefe quando era dev que codificou isso
  3. The Tipping Point by Malcolm Gladwell
  4. Divergent change: a classe é alterada de diferentes formas, fazendo coisas demais, extraia uma ou mais classes Shotgun surgery: é preciso fazer diversas alterações para uma única mudança, o que sugere que a lógica está espalhada pelo código, encapsule em uma classe Feature envy: um método está mais interessado em em dados de outra classe do que na própria classe, extraia e mova Data clumps: grupos de dados, vários parâmetros que aparecem sempre juntos: objeto de parâmetros Primitive obsession: números de telefone ou CEP Switch statements: quase sempre substituível por polimorfismo Lazy class: classe perdida Speculative: provável funcinalidade algum dia (falar do campo genérico do banco de dados que acomoda vários campos) Temporary Field
  5. É um processo de mudança no código de um software de uma forma que não altere o comportamento Se você não sabia o que é, você já fez Refactoring sem perceber, ao alterar o nome de uma variável para melhorar a legibilidade do código,
  6. Medo da mudança “Se não está quebrado não consete” Não sabe como então copie, cole e crie um novo com outro nome Você fica o tempo todo tentando evitar o problema, fugindo dele... Só que fazer vai melhorar seu conhecimento, auto-estima do time, e principalmente o seu futuro trabalho
  7. Objetivo é reduzier o acoplamento não essencial, sempre haverá acoplamento! Use interface, desenvolva para o comportamento não para a implementação