Praticamente ogni testo sulla qualità del codice che ho letto concorda sul fatto che il codice commentato è una cosa negativa. Il solito esempio è che qualcuno ha cambiato una riga di codice e ha lasciato la vecchia linea come commento, apparentemente per confondere le persone che leggono il codice in seguito. Certo, è una brutta cosa.
Ma spesso mi ritrovo a lasciare il codice commentato in un'altra situazione: scrivo un algoritmo di elaborazione della geometria o dell'immagine computazionale. Per comprendere questo tipo di codice e trovare potenziali bug in esso, è spesso molto utile visualizzare risultati intermedi (ad esempio disegnare una serie di punti sullo schermo o salvare un file bitmap). Guardare questi valori nel debugger di solito significa guardare un muro di numeri (coordinate, valori di pixel grezzi). Non molto utile. Scrivere un visualizzatore debugger ogni volta sarebbe eccessivo. Non voglio lasciare il codice di visualizzazione nel prodotto finale (danneggia le prestazioni e in genere confonde solo l'utente finale), ma non voglio perderlo neanche io. In C ++, posso usare #ifdef
per compilare condizionatamente quel codice, ma non vedo molta differenza tra questo:
/* // Debug Visualization: draw set of found interest points
for (int i=0; i<count; i++)
DrawBox(pts[i].X, pts[i].Y, 5,5);
*/
e questo:
#ifdef DEBUG_VISUALIZATION_DRAW_INTEREST_POINTS
for (int i=0; i<count; i++)
DrawBox(pts[i].X, pts[i].Y, 5,5);
#endif
Quindi, il più delle volte, lascio semplicemente il codice di visualizzazione commentato, con un commento che dice cosa viene visualizzato. Quando leggo il codice un anno dopo, di solito sono felice di poter semplicemente decommentare il codice di visualizzazione e letteralmente "vedere cosa sta succedendo".
Dovrei stare male a riguardo? Perché? C'è una soluzione superiore?
Aggiornamento : S. Lott chiede in un commento
Are you somehow "over-generalizing" all commented code to include debugging as well as senseless, obsolete code? Why are you making that overly-generalized conclusion?
Recentemente ho letto "Codice pulito" di Robert Martins, che dice:
Few practices are as odious as commenting-out code. Don't do this!.
Ho esaminato di nuovo il paragrafo nel libro (pagina 68), non c'è alcuna qualifica, nessuna distinzione fatta tra diversi motivi per commentare il codice. Quindi mi sono chiesto se questa regola è troppo generalizzata (o se ho frainteso il libro) o se quello che faccio è una cattiva pratica, per qualche motivo non lo sapevo.