Slide 1

Slide 1 text

Compartilhando conhecimento e unindo uma equipe por meio do code review VINÍCIUS BAIL ALONSO

Slide 2

Slide 2 text

Olá! EU SOU VINÍCIUS ALONSO Desenvolvedor Backend na CompuFácil Membro do PHP-SC

Slide 3

Slide 3 text

O QUE É CODE REVIEW? 1

Slide 4

Slide 4 text

“ É uma prática de revisão de trabalho de um programador antes de integrá-lo à base de código

Slide 5

Slide 5 text

QUAL O VALOR PARA MINHA EQUIPE? 2

Slide 6

Slide 6 text

COMPARTILHAMENTO DE CONHECIMENTO Centralizar o conhecimento em um único membro pode prejudicar sua equipe.

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

CRIAÇÃO DE SOLUÇÕES ALTERNATIVAS PARA OS PROBLEMAS Debater nossas implementações é fundamental para melhorá-las.

Slide 9

Slide 9 text

public function totalValue() { $total = 0; foreach ($this->items as $item) { $total += $item->totalValue(); } return $total; }

Slide 10

Slide 10 text

public function totalValue() { $items = $this->items; return array_reduce($items, 'sum'); }

Slide 11

Slide 11 text

AUMENTO DO SENSO DE EQUIPE Se algo quebrar em produção de quem é a culpa?

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

QUAIS SÃO OS PAPÉIS DOS ENVOLVIDOS? 3

Slide 14

Slide 14 text

AUTOR Quem implementou a feature, corrigiu o bug, etc e no fim enviou a PR.

Slide 15

Slide 15 text

Autor Responsabilidades: ◦ Escrever um código de qualidade; ◦ Resolver o problema conforme o requisito; ◦ Fornecer contexto

Slide 16

Slide 16 text

Fornecendo contexto .gitlab/merge_request_templates/feature.md

Slide 17

Slide 17 text

REVISOR Deve instigar um debate sobre o trabalho do colega por meio da argumentação lógica.

Slide 18

Slide 18 text

Revisor Responsabilidades: ◦ Perguntar, não dar ordens; ◦ Justificar as melhorias propostas; ◦ Ajudar com correções e mudanças

Slide 19

Slide 19 text

PONTOS CHAVE PARA UM REVIEW DE QUALIDADE 4

Slide 20

Slide 20 text

O que foi desenvolvido atende os requisitos? Melhor fazer errado a coisa certa do que fazer certo a coisa errada.

Slide 21

Slide 21 text

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;

Slide 22

Slide 22 text

O que foi desenvolvido atende os requisitos? Exemplo de requisito sem contexto

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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?

Slide 28

Slide 28 text

A solução empregada foi a melhor para o momento? Pontos a considerar: ◦ Clean Code ◦ YAGNI (you aren’t gonna need it) ◦ Arquitetura

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

AGILIDADE 5

Slide 31

Slide 31 text

Uma das motivações do manifesto ágil “Individuals and interactions over processes and tools”

Slide 32

Slide 32 text

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”

Slide 33

Slide 33 text

UMA FERRAMENTA 5

Slide 34

Slide 34 text

Uma ferramenta https://github.com/danger/danger

Slide 35

Slide 35 text

CONCLUSÃO

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Obrigado! PERGUNTAS? Você pode me encontrar Twitter: @alonsoemacao Github: @viniciusalonso Blog: https://medium.com/@vinciusalonso [email protected]

Slide 38

Slide 38 text

REFERÊNCIAS https://github.com/viniciusalonso/code-review-good-practices