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

Compartilhando conhecimento e unindo uma equipe...

Compartilhando conhecimento e unindo uma equipe por meio de code review

Palestra apresentada no Darkmira Tour 2018 em Brasília

Vinícius Alonso

April 16, 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. public function totalValue() { $total = 0; foreach ($this->items as

    $item) { $total += $item->totalValue(); } return $total; }
  3. Autor Responsabilidades: ◦ Escrever um código de qualidade; ◦ Resolver

    o problema conforme o requisito; ◦ Fornecer contexto
  4. Revisor Responsabilidades: ◦ Perguntar, não dar ordens; ◦ Justificar as

    melhorias propostas; ◦ Ajudar com correções e mudanças
  5. O que foi desenvolvido atende os requisitos? Melhor fazer errado

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

    ◦ Cuidar para não introduzir defeitos no software; ◦ Preferencialmente, não fazer tarefas ocultas em nossa PR;
  7. Os testes escritos garantem que o que foi implementado está

    realmente funcionando? Devemos ser capazes de ver os requisitos nos testes.
  8. 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
  9. Os testes escritos garantem que o que foi implementado está

    realmente funcionando? public function testAddItem_shouldAddANewItem () { $product = new Product(['price' => 3000]); $item = new Item(['product' => $product, 'quantity' => 1]); $cart = new Cart(); $cart->addItem($item); $this->assertEquals( 1, $cart->countItems()); } Teste escrito com a biblioteca PHPUnit
  10. Os testes escritos garantem que o que foi implementado está

    realmente funcionando? public function testAddItem_shouldAddTwoItems() { $product1 = new Product(['price' => 3000]); $item1 = new Item(['product' => $product1, 'quantity' => 1]); $product2 = new Product(['price' => 200]); $item2 = new Item(['product' => $product2, 'quantity' => 2]); $cart = new Cart(); $cart->addItem($item1); $cart->addItem($item2); $this->assertEquals(2, $cart->countItems()); } Teste que repete o conceito do anterior
  11. 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?
  12. A solução empregada foi a melhor para o momento? Pontos

    a considerar: ◦ Clean Code ◦ YAGNI (you aren’t gonna need it) ◦ Arquitetura
  13. Alguns dos princípios do manifesto ágil “Working software is the

    primary measure of progress” “Continuous attention to technical excellence and good design enhances agility” “The best architectures, requirements, and designs emerge from self-organizing teams”
  14. 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