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

Como o code review pode fazer bem para sua equipe

Como o code review pode fazer bem para sua equipe

Vinícius Alonso

February 07, 2018
Tweet

More Decks by Vinícius Alonso

Other Decks in Programming

Transcript

  1. “ É uma prática de revisão de trabalho de um

    programador antes de integrá-lo à base de código
  2. COMO ACONTECE? Passo a passo: ◦ O dev inicia uma

    tarefa em um novo branch; ◦ Trabalha nela; ◦ No fim envia uma Pull Request (PR) A partir disso começa o code review, onde seus pares revisarão sua PR
  3. VALOR DO CODE REVIEW PARA UMA EQUIPE Valores: ◦ Compartilhamento

    de conhecimento; ◦ Criação de soluções alternativas; ◦ Aumento do senso de equipe
  4. Autor Responsabilidades: ◦ Escrever um código de qualidade; ◦ Resolver

    o problema conforme o requisito; ◦ Testar os casos básicos; ◦ Fornecer contexto
  5. Revisor Responsabilidades: ◦ Perguntar, não dar ordens; ◦ Justificar as

    melhorias propostas; ◦ Ajudar com correções e mudanças
  6. Pontos chave para um review de qualidade Pontos: ◦ O

    que foi desenvolvido atende os requisitos? ◦ Os testes escritos garantem que o que foi implementado está realmente funcionando? ◦ A solução empregada foi a melhor para o momento?
  7. O que foi desenvolvido atende os requisitos? Melhor fazer errado

    a coisa certa do que fazer certo a coisa errada.
  8. O que foi desenvolvido atende os requisitos? Pontos a considerar:

    ◦ Se o código não cumpre o requisito, podemos adicionar um defeito ao nosso software; ◦ Preferencialmente, não deve conter tarefas ocultas em nossa PR
  9. Os testes escritos garantem que o que foi implementado está

    realmente funcionando? Devemos ser capazes de ver os requisitos nos testes.
  10. Os testes escritos garantem que o que foi implementado está

    realmente funcionando? Pontos a considerar: ◦ O testes devem cobrir os fluxos básicos; ◦ Tanto o caminho feliz como alguns caminhos de erro; ◦ Testes que não quebram não valem de nada
  11. Os testes escritos garantem que o que foi implementado está

    realmente funcionando? describe "#add_item" do it 'contain 1 new item' do product = instance_double('Product', name: 'Notebook', price: 3000) item = instance_double('Item', product: product, quantity: 1) expect do cart.add_item(item) end.to change{ cart.items.length }.from(0).to(1) end end Teste escrito com a biblioteca Rspec
  12. A solução empregada foi a melhor para o momento? O

    código escrito foi atende o que precisamos agora, sem criar um débito técnico?
  13. A solução empregada foi a melhor para o momento? Pontos

    a considerar: ◦ O código escrito está claro seguindo o Clean Code? ◦ Lembre-se do YAGNI (you aren’t gonna need it)
  14. Outros pontos relevantes sobre code review Pontos: ◦ Automatize o

    que deve ser automatizado ◦ Use os hooks do git a vontade ◦ Estude boas práticas para argumentar melhor
  15. Use os hooks do git a vontade #!/usr/bin/env ruby require

    'english' require 'rubocop' ADDED_OR_MODIFIED = /A|AM|^M/.freeze changed_files = `git status --porcelain`.split(/\n/). select { |file_name_with_status| file_name_with_status =~ ADDED_OR_MODIFIED }. map { |file_name_with_status| file_name_with_status.split(' ')[1] }. select { |file_name| File.extname(file_name) == '.rb' }.join(' ') system("rubocop #{changed_files}") unless changed_files.empty? exit $CHILD_STATUS.to_s[-1].to_i
  16. Conclusão Pontos: ◦ Code review traz muitos benefícios para sua

    equipe ◦ Devemos focar no que a máquina não pode fazer ◦ Para a prática acontecer de maneira saudável precisamos de indivíduos motivados a melhorar