Code Review

"Se vi mais longe foi por estar de pé sobre ombros de gigantes." - Isaac Newton

Code Review de acordo com a wikipedia é um revisão sistematica do código-fonte para corrigir erros/más práticas que são feitas durante a fase inicial do desenvolvimento de um software.

Code Review não é necessário por que um programador iniciante não sabe programar ou pensar por conta própria, ele acontece para evitar que armadilhas das linguagens ou do design da aplicação façam com que o programador escurregue em algum ponto e deve ser feito até mesmo em códigos criados por programadores plenos.

Está revisão pode ser por meio de uma ferramenta(CSSLint e JSLint são exemplos), porém pessoalmente acredito que o uso deste tipo de ferramenta não substitui um revisor humano, de preferência alguém com mais experiência/conhecimento da tecnologia utilizada.

Trabalhei por um bom em um projeto onde a revisão de código era obrigatória para que qualquer mudança/novas implementações fosse implantadas em produção. Dessa forma inibiamos a história da janela quebrada por causa de "esquecimento" do programador ou até mesmo dead lines apertadas.

A melhor forma possível que conheço de se fazer isso é fazendo com que todo revisor tenha a mesma checklist. Abaixo algumas considerações do que eu acho importante estarem nessa checklist:

   * Code Style: Como estão os nomes de váriaveis/funções/classes? Existem os comentários exigidos pelo cliente/projeto?

   * Melhores build-in functions/classes: O código está usando as melhores classes/métodos da biblioteca padrão da linguagem?(no php temos o exemplo do PDO invés do mysql)

   * Cobertura de testes unitários: Mesmo com TDD, muitas vezes achamos que estamos cobrindo boa parte/todo o código, porém basta uma segunda cabeça interpretar o código para vermos que ainda existem coisas a serem testadas.

Para cada projeto podem haver outros itens, como testes de i/o no banco e etc.

Com o uso do Code Review o projeto tende a ficar mais padronizado e a ter menos problemas de manutenção no futuro.