Uso spesso il debugger, perché lavoro su un grande sistema e quindi faccio schifo.
link
Indipendentemente dal fatto che il tuo codice sia breve e di frequente lettura, c'è sempre la possibilità che abbia dei bug. link
Errare è umano e non si può mai dimostrare che un programma sia corretto, quindi perché non utilizzare strumenti come debugger / test automatici per aiutare noi stessi in questa difficile attività?
Se il codice è abbastanza breve, saranno necessari semplici test. Inoltre, se è breve e conosci la natura del bug, la lettura del codice può essere sufficiente. Tuttavia, una volta che la base di codice è grande, coinvolge più lingue mescolate insieme, più 3 livelli, allora devi semplicemente avere una buona copertura di test su molti livelli più un ottimo debugger, altrimenti perderai un sacco di tempo.
Quindi, quando non ho bisogno di un debugger?
Non sono il programmatore più intelligente, né il più esperto, ma a volte non ho bisogno di usare il debugger. Ecco quando:
- Il codice è mio o ben scritto AND
- È scritto in una lingua leggibile AND
- Il progetto complessivo è di piccole dimensioni.
Quando faccio molto affidamento su un debugger?
- Risposta breve: spesso .
- Quando un'applicazione si blocca. Soprattutto quando è schierato. Avere installato VS2010 su quel computer può fare la differenza tra "Errore sconosciuto" e
FileNotFoundException
.
- Quando una libreria di terze parti si arresta in modo anomalo o si comporta male.
- Quando il codice è scritto male. In particolare se lo stesso file è stato toccato da 10 persone diverse negli ultimi 10 anni, 7 dei quali non sono più con la compagnia.
- Quando il progetto è grande
- Quando il codice è piuttosto monolitico.
- Quando sono coinvolti più livelli (GUI, SQL, BL).
Si noti che "debugger" può riferirsi a più di uno strumento. Uso debugger di Visual Studio, debugger SQL (principalmente per proc stored) e SQL profiler (per capire quale SP viene chiamato). Avrei bisogno di strumenti di questo calibro stavo scrivendo un veloce script Python sysadmin-ish? No. Se avessi creato il mio piccolo strumento basato sulla GUI? Dipende. Se è. Net WinForms - probabilmente no. Se è WPF - sì.
Che cosa definisce comunque un programmatore "reale"? Uno che è veloce? esperto? È bravo negli algoritmi? Scrive buona documentazione? Proprio quando uno si laurea in questo nuovo titolo? Quando si attraversa la linea magica?
Direi che un programmatore che non si è sporcato le mani in uno sforzo di oltre 100 anni uomo non ha avuto la possibilità di essere umiliato dalla complessità e dai propri limiti (oltre che frustrato dalla qualità del codice) .
Personalmente, provo a usare il miglior debugger a mia disposizione e tendo ad usarlo spesso. Se un'attività è abbastanza semplice e non richiede un debugger, non la uso poi. Non ci vuole troppo tempo per capire se ne ho bisogno o no.
...
Ora, in teoria, potevo leggere la base del codice per così tanto tempo che avrei capito. Tuttavia, l'approccio pratico funziona meglio, inoltre spesso desidero riscrivere quello stupido codice che sto vedendo. Sfortunatamente ci vorrebbero più di 10 anni per ripulire il codice base in cui mi trovo. Quindi, usare il debugger è un ovvio primo passo. Solo quando scoprirò quale di queste 5 milioni di linee di codice sta funzionando, dovrei scansionare il file su e giù per cercare di capire cosa sta facendo quella classe.