I commenti servono per comunicare qualsiasi informazione ai futuri sviluppatori che utilizzano o mantengono il codice, il che non è ovvio dalla lettura del codice.
Quando scrivi commenti, considera le situazioni che si presentano ad un nuovo sviluppatore che non ha familiarità con il tuo codice e la tua mentalità attuale.
Mentre scrivi il codice, di solito ti stai divertendo con un sacco di palle in testa, cercando di evitare potenziali insidie; e i tuoi commenti dovrebbero riflettere le cose che stai manipolando, perché è più probabile che siano informazioni che ogni sviluppatore futuro dovrà anche conoscere per evitare di commettere errori. Ad esempio:
// A user could potentially type an invalid username here but we can't
// validate it yet because we need to support the legacy login format.
o
// We don't know whether the server is available yet, but we don't care
// until the user does something which involves a message to the server.
o
// Always use the FooFactory for creating Foo objects because it guarantees
// they will be initialised using the correct Config.
o
// This calculation is only an approximation until the customer can
// supply us with the correct logic, so we know it's wrong, but the
// customer confirmed they are happy with it as an interim measure.
o
// HACK: this function fixed a critical fault identified while on XYZ customer site.
// This is currently in use by XYZ, it must be refactored into a generic solution ASAP.
// see ticket #12345 in the bugtracking system.
o
// This function may fail if VehicleType==Train, but there are currently no
// documented requirements or data for Trains, so there's no way to reliably test it.
Quindi, quando cerchi di decidere quale tipo di commenti inserire nel tuo codice, fai diversi passi indietro dal codice stesso e pensa a tutti i problemi che hai dovuto affrontare, alle ipotesi che hai fatto, ai compromessi che hai fatto , ecc.
I commenti dovrebbero essere una motivazione che cattura "Perché ho scritto questo codice in questo modo particolare in questo particolare momento?". La realtà è che il codice solitamente non è mai 'finito' , il codice tende ad evolversi costantemente, tende ad essere limitato da problemi del mondo reale (scadenze, richieste dei clienti, budget, ecc.). quindi avrà sempre verruche e imperfezioni che vanno oltre il controllo dello sviluppatore.
I tuoi commenti sono il posto migliore per documentare queste cose - evita di scrivere lunghi saggi, limitati a inserire la quantità minima di informazioni che potrebbero avvisare i futuri sviluppatori di non commettere errori, o anche solo far loro sapere che hai già considerato il vantaggi / limitazioni della soluzione (o anche se hai riscontrato potenziali problemi con il codice esistente di qualcun altro e non sono stato in grado di risolverlo).