Uso el depurador a menudo, porque trabajo en un sistema grande y, por lo tanto, apesta.
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
No importa cuán corto y con frecuencia se lea su código, siempre habrá la posibilidad de que tenga errores. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
Errar es humano y uno nunca puede probar que un programa es correcto, entonces, ¿por qué no usar herramientas como depurador / pruebas automatizadas para ayudarnos en este difícil negocio?
Si el código es lo suficientemente corto, entonces se realizarán pruebas simples. Además, si es breve y conoce la naturaleza del error, la lectura del código puede ser suficiente. Sin embargo, una vez que la base del código es grande, involucra varios idiomas mezclados, más 3 niveles, entonces simplemente debe tener una buena cobertura de prueba en muchos niveles más un muy buen depurador; de lo contrario, perderá mucho tiempo.
Entonces, ¿cuándo no necesito un depurador?
No soy el programador más inteligente ni el más experimentado, pero aun así, a veces no necesito usar el depurador. Eso es cuando:
- El código es mío o bien escrito Y
- Está escrito en un lenguaje legible Y
- El proyecto general es pequeño.
¿Cuándo confío mucho en un depurador?
- Respuesta corta: a menudo .
- Cuando una aplicación falla. Particularmente cuando se implementa. Tener VS2010 instalado en esa computadora puede marcar la diferencia entre "Error desconocido" y
FileNotFoundException
.
- Cuando una biblioteca de terceros se bloquea o se porta mal.
- Cuando el código está mal escrito. Particularmente si el mismo archivo fue tocado por 10 personas diferentes en los últimos 10 años, 7 de los cuales ya no están en la compañía.
- Cuando el proyecto es grande
- Cuando el código es bastante monolítico.
- Cuando hay varios niveles (GUI, SQL, BL) involucrados.
Tenga en cuenta que "depurador" puede referirse a más de una herramienta. Utilizo el depurador de Visual Studio, el depurador de SQL (principalmente para los procesos almacenados) y el perfilador de SQL también (para averiguar qué SP se están llamando). ¿Necesitaría herramientas de este calibre si estuviera escribiendo un script Python sysadmin-ish rápido? No. ¿Si hice mi propia pequeña herramienta basada en GUI? Depende Si es .Net WinForms, probablemente no. Si es WPF, sí.
¿Qué define a un programador "real" de todos modos? ¿Uno que sea rápido? ¿experto? ¿Es bueno en algoritmos? Escribe buena documentación? ¿Cuándo se gradúa exactamente este nuevo título? ¿Cuándo se cruza la línea mágica?
Diría que un programador que no se ha ensuciado las manos en un esfuerzo existente de más de 100 años no ha tenido la oportunidad de sentirse humillado por la complejidad y las limitaciones propias (así como por la calidad del código).
Personalmente trato de usar el mejor depurador disponible para mí, y tiendo a usarlo con frecuencia. Si una tarea es lo suficientemente simple y no requiere un depurador, entonces no la uso. No toma mucho tiempo determinar si necesito uno o no.
...
Ahora, en teoría, podría leer la base del código durante tanto tiempo, que simplemente lo obtendría. Sin embargo, el enfoque práctico funciona mejor, además, a menudo quiero volver a escribir ese código estúpido que estoy viendo. Desafortunadamente, me llevaría más de 10 años limpiar la base de código en la que estoy. Por lo tanto, usar el depurador es un primer paso obvio. Solo cuando descubro cuál de las 5 millones de líneas de código está actuando, escanearé el archivo hacia arriba y hacia abajo para tratar de averiguar qué está haciendo esa clase.