Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Refatoração (entrevista)

Refatoração (entrevista)

Apresentação usada em processo de entrevista.

Davi Marcondes Moreira

October 31, 2016
Tweet

More Decks by Davi Marcondes Moreira

Other Decks in Programming

Transcript

  1. Objetivos principais: 1. Sempre deixar a casa melhor do que

    você encontrou. 2. Tornar o software mais confiável para você e para quem vai mexer nele amanhã.
  2. Correções • Débito técnico (o famoso TODO) • Vulnerabilidades e

    bugs • Acúmulo de más práticas Melhorias • Atualização de dependências • Melhorar performance • Diminuir complexidade (o código deve ser simples)
  3. Correções • Débito técnico (o famoso TODO) • Vulnerabilidades e

    bugs • Acúmulo de más práticas Melhorias • Atualização de dependências • Melhorar performance • Diminuir complexidade (o código deve ser simples) Criação • TDD: red, green, e, qual era o terceiro mesmo?
  4. Correções • Débito técnico (o famoso TODO) • Vulnerabilidades e

    bugs • Acúmulo de más práticas Melhorias • Atualização de dependências • Melhorar performance • Diminuir complexidade (o código deve ser simples) Criação • TDD: red, green, e, qual era o terceiro mesmo? Refactor.
  5. Colaboração • Refatorar não é uma atividade isolada. ◦ Pedir

    ajuda aos colegas ◦ Discutir em grupo/equipe ◦ Alinhar métricas e regras ▪ Mínimo de % na cobertura de testes, padrões de estilo ◦ Não ser negligente e assumir responsabilidade
  6. Ferramentas para toda obra • PHP Mess Detector Análise de

    padrões de escrita até complexidade de código • Blackfire Ferramenta de profiling • sensiolabs/security-checker Verificação de possíveis problemas com as bibliotecas e dependências • TDD e outros testes automatizados
  7. 1. Renomeando métodos • Usando forma mais claras, curtas e

    concisas, ou mesmo verbosas se necessário. • Ser o mais explícito possível. • Em casos críticos, reescreva a nova chamada dentro do método antigo, depreciando o método anterior e evitando quebrar compatibilidades enquanto a adoção do novo método é feita por toda a equipe.
  8. 2. Extrair responsabilidades de um método em um novo(a) método/classe

    • Identificar que parte de um código pode ser reescrita em outro lugar, reduzindo a complexidade. • Abre espaço para refletir sobre princípios como 'o que de fato isso deveria estar fazendo?', 'qual a verdadeira responsabilidade desse método?' e encaixar boas práticas como SRP de orientação à objetos.
  9. 3. Eliminar código morto • Código que não tem mais

    uso, ou é fruto de copiar de uma parte específica do projeto para outra, que ficou para trás. • Não ter medo de excluir código. Partes antigas podem ser recuperadas pelo SCV. • Requer uma boa estratégia de teste.
  10. Entregas pontuais O código fica mais compreensível, organizado e flexível

    à mudanças. Confiança e segurança ao editar o código Maior visibilidade dos problemas. Garantia de qualidade Fim da síndrome da casa de vidro. Uma bela noite de sono =P
  11. No episódio de hoje… • Tudo o que se precisa

    é intenção. • Refatoração acontece em vários momentos. E todos podem e devem ajudar. • Quanto mais cedo e pontual, mais fácil de fazer. • Nem toda refatoração é simples, e cada caso precisa ser muito bem analisado para verificar todo impacto e esforço.. • "A única certeza sobre software é que ele muda."