Eu uso o depurador frequentemente, porque trabalho em um sistema grande e, portanto, sou péssimo.
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
Não importa o quão curto e frequentemente seja o seu código, sempre haverá a possibilidade de ele ter erros. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
Errar é humano e nunca se pode provar que um programa está correto. Por que não usar ferramentas como depurador / teste automatizado para nos ajudar nesse negócio difícil?
Se o código for curto o suficiente, serão necessários testes simples. Além disso, se for curto e você souber a natureza do bug, a leitura do código poderá ser suficiente. No entanto, uma vez que a base de código é grande, envolve vários idiomas misturados, além de três camadas, você simplesmente deve ter uma boa cobertura de teste em vários níveis, além de um depurador muito bom - caso contrário, você estará perdendo muito tempo.
Então, quando não preciso de um depurador?
Não sou o codificador mais inteligente, nem o mais experiente, mas, ainda assim, às vezes não preciso usar o depurador. É quando:
- O código é meu ou bem escrito AND
- Está escrito em uma linguagem legível E
- O projeto geral é pequeno.
Quando confio muito em um depurador?
- Resposta curta: frequentemente .
- Quando um aplicativo falha. Especialmente quando é implantado. A instalação do VS2010 nesse computador pode fazer a diferença entre "Erro desconhecido" e
FileNotFoundException
.
- Quando uma biblioteca de terceiros trava ou se comporta mal.
- Quando o código está mal escrito. Principalmente se o mesmo arquivo foi abordado por 10 pessoas diferentes nos últimos 10 anos, 7 das quais não estão mais na empresa.
- Quando o projeto é grande
- Quando o código é bastante monolítico.
- Quando há várias camadas (GUI, SQL, BL) envolvidas.
Observe que "depurador" pode se referir a mais de uma ferramenta. Eu uso o depurador do Visual Studio, o depurador SQL (principalmente para procs armazenados) e o profiler SQL (para descobrir qual SP está sendo chamado). Precisaria de ferramentas desse calibre para escrever um script rápido do sysadmin-ish Python? Não. Se eu fiz minha própria pequena ferramenta baseada em GUI? Depende. Se for .Net WinForms - provavelmente não. Se for WPF - sim.
O que define um programador "real" de qualquer maneira? Um que é rápido? bem informado? É bom em algoritmos? Escreve boa documentação? Apenas quando exatamente um graduado para este novo título? Quando alguém cruza a linha mágica?
Eu diria que um programador que não sujou as mãos em um esforço existente de mais de 100 anos-homem não teve a chance de ser humilhado pela complexidade e pelas próprias limitações (além de frustrado com a qualidade do código).
Eu, pessoalmente, tento usar o melhor depurador disponível para mim e costumo usá-lo com frequência. Se uma tarefa é simples o suficiente e não requer um depurador - eu não a uso então. Não demora muito para descobrir se eu preciso de um ou não.
...
Agora, em teoria, eu podia ler a base de código por tanto tempo, que simplesmente a obtinha. No entanto, a abordagem prática funciona melhor, e muitas vezes quero reescrever o código estúpido que estou vendo. Infelizmente, levei mais de 10 anos para limpar a base de código em que estou. Portanto, usar o depurador é um primeiro passo óbvio. Somente quando eu descobrir qual das 5 milhões de linhas de código está funcionando, eu digitalizarei o arquivo para cima e para baixo para tentar descobrir o que essa classe está fazendo.