DEV Community

Vitor Freitas
Vitor Freitas

Posted on • Updated on

Debugando como um profissional

O que é "debugar"?

Debugar é a arte de achar a causa de um bug. Nem sempre debugar é algo trivial e pode tomar horas, dias ou até semanas para que você consiga resolver o bug.

O mindset correto

Debugar é uma atividade que requer que o programador pense de uma forma clara e não enviezada sobre um problema. É muito fácil culpar o outro quando um bug surge, e saber que independente de quem for a culpa a responsabilidade de corrigir este bug é da equipe requer tempo e, claro, o mindset correto.

Nada é impossível

É comum querermos pensar "mas isto é impossível!" ou "no meu código não acontece esse tipo de coisa." quando um bug ou um erro surge. Sinto lhe informar mas isto é tão possível que já aconteceu! Então ao invés de lamentar ou discordar que este bug acabou de acontecer, use o seu tempo para corrigi-lo! Fix the problem, not the blame.

Não entre em pânico

Somos pagos para resolver problemas. A partir do momento que somos contratados por alguém ou por alguma empresa, nossa função é resolver os problemas dessa pessoa, agregando valor para a sua marca ou produto. Não entrar em pânico é imprescindível, e ao debugar um código não será diferente. Dê um passo para trás e veja o contexto como um todo. Por que isso aconteceu? Dada as circunstâncias, isto acontecerá novamente? Lembre-se, computadores fazem o que o instruímos a fazer, e não o que queremos que ele faça.

Corrija o bug, e não os seus sintomas

Sintomas são comportamentos que existem por conta de um determinado bug, e é fácil pensarmos que estes sintomas são o bug. Corrigir sintomas significam que o bug ainda está lá, e sinto lhe informar, mas ele vai voltar! Busque a raiz do problema e não os sintomas que o cercam.

Técnicas para debugar como um profissional

Reproduza o bug

Reproduzir um bug é uma frase conhecida no nosso meio, ela significa que você foi capaz de alcançar o mesmo comportamento reportado pelo seu usuário ou QA (controle de qualidade). Esta etapa é super importante, pois se você não consegue reproduzir um bug, como saberá que o mesmo foi corrigido? Se possível, isole este comportamento por meio de testes unitários/integração ou em um ambiente controlado, principalmente em casos onde você precisa passar por vários passos até chegar no bug. Você ganhará tempo e consequentemente resolverá este problema mais rápido.

Tenha controle dos dados

Como um bom programador JavaScript, uma das técnicas que mais uso para debugar minhas aplicações é por meio do console.log. Essa função escreve no console do browser (ou terminal) o que receber como parâmetro. Ou seja, posso escrever um payload de um requisição, o estado de uma variável em determinado bloco ou até um simples "cheguei aqui!" para saber se uma função foi chamada, por exemplo. É muito mais fácil descobrir um erro quando você pode visualiza-lo com clareza. Use funções de print ao seu favor!

Diga em voz alta

O ato de explicar o erro para outra pessoa é esclarecedor. O simples fato de você expressar o que está acontecendo para um colega de equipe muitas vezes é o necessário para que a solução apareça. Comunique-se!

Refatore seus testes

Sempre que possível cheque a integridade dos seus testes. Testes não podem ser enviezados e devem funcionar com as mais diversas entradas! Refatore quando for conveniente.

Use um debugger!

Temos várias ferramentas para auxiliar o processo de debugging do seu código. Use-as! IDEs geralmente contam com debuggers, como por exemplo Netbeans, Visual Studio Code e as IDEs da JetBrains. Use aquela que você se sentir mais a vontade e que te ajude a resolver os seus problemas.

Posteriormente pretendo escrever um artigo ensinando a usar o debugger do VS Code para debugar aplicações front-end e Node.js. Fique de olho!

Conclusão

Estas são dicas valiosas e que uso no meu dia-a-dia. A maioria vieram de notas que fiz enquanto lia o capitulo 3 do livro O programador pragmático e ver que eu estava no caminho certo foi uma sensação muito boa 😆. Recomendo a leitura do livro, lá ele aborda vários outros tópicos além de debugging.

Dúvidas ou sugestões estou sempre a disposição!

Top comments (0)