Método científico de debug
O curso trata debug como um método de quatro passos vindo da ciência experimental: observar o comportamento real, formular uma hipótese falseável, projetar o menor teste possível e mudar uma variável de cada vez. Todas as aulas acompanham um bug num model descartável, ScratchDebugArticle, em que published? retorna false mesmo com published_at definido. Cada hipótese é testada no prompt do bin/rails console. Duas hipóteses são derrubadas, e source_location leva a um ! a mais que inverte o resultado. A última aula reproduz a sessão inteira em ordem.
O que você vai aprender
- ✓Por que edições aleatórias no código não funcionam como debug
- ✓Registrar o que foi chamado, o que era esperado e o que voltou
- ✓Escrever uma hipótese precisa o bastante para poder ser provada errada
- ✓Projetar o menor teste que responde a uma única hipótese
- ✓Testar uma variável de cada vez no console do Rails
- ✓Achar a definição de um método com source_location e confirmar a correção
Chutar não é fazer debug
Imagine um bug: article.published? retorna false quando deveria retornar true. Um primeiro movimento comum é mudar algo e rodar de novo. Adicionar um .presence aqui, trocar nil por false ali, reordenar duas linhas, jogar um puts e ficar olhando pro resultado. Quatro edições depois o bug continua…
Ler a aula completa grátis →Currículo
7 aulasChutar não é fazer debug
Compara edições aleatórias no código com os quatro passos do método científico aplicados a um bug real.
Observe o que realmente acontece
Registra o retorno de published? no console, comparando o true esperado com o false recebido, antes de buscar causas.
Uma hipótese, declarada com precisão
Mostra como declarar uma hipótese específica sobre o bug de forma que um teste possa prová-la errada.
O menor teste que poderia provar que está errada
Usa uma linha no console, article.title.present?, para derrubar a primeira hipótese sem testar mais nada.
Uma variável de cada vez
Descarta um published_at nil e depois usa source_location para achar onde published? foi definido.
De hipótese confirmada até a correção
Lê a linha apontada por source_location, encontra um ! a mais e confirma a correção repetindo a mesma chamada.
Juntando tudo: debugando o published?
Reproduz a sessão inteira em ordem, da primeira observação às três hipóteses e à correção de um caractere.