Solitamente considero tali commenti come una cattiva pratica e penso che questo tipo di informazioni appartenga ai registri di commit SCM. Rende il codice più difficile da leggere nella maggior parte dei casi.
Tuttavia , faccio ancora spesso qualcosa del genere per specifici tipi di modifiche.
Caso 1 - Attività
Se usi un IDE come Eclipse, Netbeans, Visual Studio (o hai qualche modo di fare ricerche di testo sulla base di codice con qualcos'altro), forse il tuo team usa alcuni "commenti tag" o "tag attività" specifici. In tal caso ciò può essere utile.
Di tanto in tanto, quando riesamina il codice, aggiungo qualcosa del tipo:
// TOREVIEW: [2010-12-09 haylem] marking this for review because blablabla
o
// FIXME: [2010-12-09 haylem] marking this for review because blablabla
Uso diversi tag di attività personalizzati che posso vedere in Eclipse nella vista attività per questo, perché avere qualcosa nei registri di commit è una buona cosa ma non abbastanza quando hai un dirigente che ti chiede in una riunione di revisione perché la correzione di errori XY è stato completamente dimenticato e sfuggito. Quindi su questioni urgenti o parti di codice veramente discutibili, questo funge da promemoria aggiuntivo (ma di solito manterrò il commento breve e controllerò i registri di commit perché QUESTO è il motivo del promemoria, quindi non ingombrare troppo il codice).
Caso 2 - Patch di Libs di terze parti
Se il mio prodotto ha bisogno di impacchettare una parte di codice di terze parti come sorgente (o libreria, ma ricostruita dall'origine) perché doveva essere riparata per qualche motivo, documentiamo la patch in un documento separato dove elenchiamo quelli "avvertimenti" per riferimento futuro, e il codice sorgente di solito contiene un commento simile a:
// [PATCH_START:product_name]
// ... real code here ...
// [PATCH_END:product_name]
Caso 3 - Correzioni non ovvie
Questo è un po 'più controverso e più vicino a ciò che il tuo senior dev sta chiedendo.
Nel prodotto su cui lavoro al momento, a volte (sicuramente non è una cosa comune) abbiamo un commento del tipo:
// BUGFIX: [2010-12-09 haylem] fix for BUG_ID-XYZ
Lo facciamo solo se il bugfix non è ovvio e il codice si legge in modo anomalo. Questo può essere il caso, ad esempio, delle stranezze del browser o delle oscure correzioni dei CSS che è necessario implementare solo perché c'è un errore di un documento in un prodotto. Quindi in generale lo collegheremo al nostro repository di problemi interni, che conterrà quindi il ragionamento dettagliato alla base del bugfix e dei puntatori alla documentazione del bug del prodotto esterno (ad esempio, un avviso di sicurezza per un ben noto difetto di Internet Explorer 6, o qualcosa del genere).
Ma come detto, è abbastanza raro. E grazie ai tag delle attività, possiamo regolarmente esaminarli e controllare se queste strane correzioni hanno ancora senso o possono essere eliminate gradualmente (ad esempio, se abbiamo eliminato il supporto per il prodotto buggato che causa il bug in primo luogo).
Questo in: Un vero esempio di vita
In alcuni casi, è meglio di niente:)
Ho appena trovato un'enorme classe di calcolo statistico nella mia base di codice, in cui il commento dell'intestazione era sotto forma di un log delle modifiche con il solito yadda yadda: revisore, data, bug ID.
All'inizio ho pensato di rottamare, ma ho notato che gli ID dei bug non solo non corrispondevano alla convenzione del nostro attuale tracker di problemi, ma nemmeno corrispondevano a quelli del tracker usato prima di entrare nella compagnia. Così ho provato a leggere il codice e a capire cosa stava facendo la classe (non essendo uno statistico) e ho anche cercato di chiarire questi rapporti sui difetti. Come è successo, erano abbastanza importanti e avrebbero reso la vita del prossimo ragazzo a modificare il file senza conoscerne abbastanza orribile, trattandosi di problemi di precisione minori e casi speciali basati su requisiti molto specifici emessi dal cliente originario allora . In conclusione, se questi non fossero stati lì, non avrei saputo. Se non fossero stati lì dentro E avevo avuto una migliore comprensione della classe, avrei notato che alcuni calcoli erano fuori uso e li avevano "riparati".
A volte è difficile tenere traccia di requisiti molto vecchi come questi. Alla fine quello che ho fatto è stato ancora rimuovere l'intestazione, ma dopo aver nascosto in un commento di blocco prima di ogni funzione compromettente che descrive il motivo per cui questi calcoli "strani" sono richieste specifiche.
Quindi, in quel caso, consideravo ancora queste cattive abitudini, ma ero felice che lo sviluppatore originale lo facesse almeno! Sarebbe stato meglio commentare il codice chiaramente, invece, ma suppongo che sia stato meglio di niente.