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

Trabalhando com Código Legado

Trabalhando com Código Legado

Palestra apresentada na Python Brasil 13 em Belo Horizonte

Labcodes Software Studio

October 08, 2017
Tweet

More Decks by Labcodes Software Studio

Other Decks in Technology

Transcript

  1. O QUE É CÓDIGO LEGADO? Código sem testes? Código mal

    escrito? - Como definir se o código é mal escrito?
  2. MÉTRICAS Média de linhas de código por método Média de

    complexidade ciclomática por método Profundidade na árvore de herança Falta de coesão em métodos Conexões aferentes de uma classe
  3. FUNCIONAR Aceitando o fato que todo software tem bug Nem

    todo bug é de alta prioridade Não é porque seu produto tem menos bugs que o concorrente que ele terá mais sucesso É importante garantir que um bug não ocorra de novo após corrigido TESTES!
  4. FÁCIL DE ENTENDER “Readability Counts” Style guides (PEP-008) - Beyond

    PEP 8 Raymond Hettinger Código sem sotaque API consistente
  5. FÁCIL DE MUDAR Quatro razões para mudar um software Adicionar

    uma feature Corrigir um bug Melhorar o design Otimização
  6. FÁCIL DE MUDAR Testes Dependências Repetição de código não é

    um problema é um sintoma. Design e Feedback
  7. - Definição achada na 7ª página de resultados do google

    “Legacy code is a codebase that is continually patched, but no longer engineered”
  8. - Definição achada na 7ª página de resultados do google

    “Legacy code is a codebase that is continually patched, but no longer engineered”
  9. Engenharia é a aplicação do conhecimento científico, econômico, social e

    prático, com o intuito de inventar, desenhar, construir, manter e melhorar estruturas, máquinas, aparelhos, sistemas, materiais e processos.
  10. CENÁRIO Startup “de tecnologia” com 1 dev Quem escreveu o

    código saiu do time Código desenvolvido em python 2.7 Você passa mais tempo resolvendo bug do que implementando novas features
  11. RESISTA Resista a tentação de reescrever código do zero! É

    caro! Não entrega valor por MUITO tempo! Refatoração é diferente de redesign! Existe valor no código mal escrito
  12. STYLE GUIDES PEP-008 Google Python Style Guide Airbnb - JS

    - CSS - React https://github.com/RichardLitt/awesome- styleguides
  13. LOGS Ajudam a entender o fluxo da aplicação Transformam a

    aplicação em um livro de registros Sentry
  14. AUTOMATIZE TAREFAS REPETIDAS Deploy Dump de database Criação de usuários

    Tarefas que não entregam valor ao usuário final
  15. FLUXO DE CORREÇÃO DE BUG 1. Crie um teste para

    o bug. O teste DEVE falhar 2. Corrija o bug 3. Teste passa 4. Deploy 5. Procure por repetição de código/responsabilidades fora do lugar que você inseriu 1. Proponha uma nova abordagem com um teste. O teste DEVE falhar 2. Implementar a nova abordagem 3. Teste passa 4. Deploy
  16. REFATORAÇÃO Como vender refatoração? Make the invisible, visible Ataque as

    áreas mais críticas do sistema primeiro Release early, release often