Często używam debuggera, ponieważ pracuję na dużym systemie i dlatego jestem do kitu.
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
Bez względu na to, jak krótki i często czyta się twój kod, zawsze będzie możliwość, że będzie zawierał błędy. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
Błędem jest człowiek i nigdy nie można udowodnić, że program jest poprawny, więc dlaczego nie skorzystać z narzędzi takich jak debugger / automatyczne testowanie, aby pomóc sobie w tym trudnym biznesie?
Jeśli kod jest wystarczająco krótki, zrobią to proste testy. Ponadto, jeśli jest krótki i znasz naturę błędu, odczyt kodu może wystarczyć. Jednak gdy baza kodu jest duża, obejmuje kilka języków zmieszanych razem, plus 3 poziomy, wtedy po prostu musisz mieć dobry zasięg testowy na wielu poziomach oraz bardzo dobry debugger - w przeciwnym razie będziesz marnować dużo czasu.
Kiedy więc nie potrzebuję debuggera?
Nie jestem najmądrzejszym programistą ani najbardziej doświadczonym, ale czasami nie muszę korzystać z debuggera. To jest, kiedy:
- Kod jest mój lub dobrze napisany ORAZ
- Jest napisany w czytelnym języku ORAZ
- Ogólny projekt jest niewielki.
Kiedy mocno polegam na debugerze?
- Krótka odpowiedź: często .
- Gdy aplikacja ulega awarii. Zwłaszcza gdy jest wdrożony. Zainstalowanie VS2010 na tym komputerze może odróżnić „Nieznany błąd” i
FileNotFoundException
.
- Gdy biblioteka innej firmy ulega awarii lub zachowuje się nieprawidłowo.
- Gdy kod jest źle napisany. Zwłaszcza jeśli w ciągu ostatnich 10 lat ten sam plik został dotknięty przez 10 różnych osób, z których 7 nie jest już związanych z firmą.
- Gdy projekt jest duży
- Gdy kod jest raczej monolityczny.
- Gdy w grę wchodzi kilka warstw (GUI, SQL, BL).
Zauważ, że „debugger” może odnosić się do więcej niż jednego narzędzia. Używam debugera Visual Studio, debugera SQL (głównie dla przechowywanych proc) i profilera SQL (aby dowiedzieć się, które SP są wywoływane). Czy potrzebowałbym narzędzi tego kalibru, pisałem szybki skrypt Pythona sysadmin? Nie. Jeśli stworzę własne małe narzędzie oparte na GUI? Zależy. Jeśli to jest .Net WinForms - prawdopodobnie nie. Jeśli jest to WPF - tak.
Co w ogóle definiuje „prawdziwego” programistę? Który jest szybki? bywały? Czy jest dobry w algorytmach? Pisze dobrą dokumentację? Kiedy dokładnie jeden absolwent tego nowego tytułu? Kiedy ktoś przekracza magiczną linię?
Powiedziałbym, że programista, który nie pobrudził sobie rąk w ciągu trwającego ponad 100 osobolat wysiłku, nie miał szansy na pokorę złożonością i własnymi ograniczeniami (a także sfrustrowaną jakością kodu).
Osobiście staram się używać najlepszego dostępnego dla mnie debuggera i często go używam. Jeśli zadanie jest wystarczająco proste i nie wymaga debuggera - wtedy go nie używam. Nie trzeba długo zastanawiać się, czy go potrzebuję, czy nie.
...
Teoretycznie mogłem tak długo czytać bazę kodu, że po prostu ją otrzymałem. Jednak praktyczne podejście działa najlepiej, a ponadto często chcę ponownie napisać ten głupi kod, który widzę. Niestety oczyszczenie bazy kodu, w której się znajduję, zajęłoby mi ponad 10 lat. Używanie debugera to oczywisty pierwszy krok. Dopiero gdy dowiem się, który z 5 milionów wierszy kodu działa w górę, zeskanowałbym plik w górę i w dół, aby dowiedzieć się, co robi ta klasa.