Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Il codice non può essere auto-commentante

Sui blog di MSDN è apparso un post per me molto interessante, in cui si discute del fatto che il codice non può commentarsi da sé, quindi è necessario scrivere commenti per spiegare quello che si sta sviluppando. Si tratta di un argomento che mi sta molto a cuore: personalmente, sono dell'opinione che sia meglio un commento in più di uno in meno... Anzi, forse io esagero e tendo a commentare più del dovuto, ma lo faccio nell'ottica di riprendere il codice dopo qualche tempo dalla sua scrittura: quello che all'inizio può apparire chiarissimo (nel momento in cui lo si progetta), a distanza di mesi rischia di diventare oscuro... Considerando che, nella maggior parte dei casi, basta un commento di un paio di righe per evitare questi problemi, direi che lo sforzo è ampiamente ripagato...

Technorati Tag:

Print | posted on lunedì 9 giugno 2008 19:05 | Filed Under [ C# VB .NET .NET Compact Framework ADO .NET & SQL ASP .NET .NET 3.0 .NET Micro Framework Orcas & .NET 3.5 Silverlight LINQ ]

Feedback

Gravatar

# re: Il codice non può essere auto-commentante

Interessante. Personalmente adotto l'approccio opposto, ovvero ogni linea di commento e' uno smell.

Ovviamente potrei articolare un po' meglio, ma solo se interessa... ai fini di un confronto...

-LV
09/06/2008 19:39 | LudovicoVan
Gravatar

# re: Il codice non può essere auto-commentante

Io credo che non è vero ne che non può essere auto-commentante e ne che si può smettere di scrivere i commenti.
La giusta via come sempre sta nel mezzo!
Il problema come sempre è l'uso o abuso che si fa uno strumento, in questo caso i commenti.
Io credo nella frase "meglio codice auto-esplicativo che commentato" questo per questi motivi:

1) Spesso ho trovato snippet di codice con nomi di variabili veramente assurdi tipo a,b e c (e spesso reciclati per pigrizia) e poi 5 righe di commento per spiegare a cosa serve.
2) I commenti vanno mantenuti come il codice. Il solito programmatore pigro che chiama le variabili a,b e c scriverà il super commento la prima volta e poi non lo aggiornerà tutte le volte che effettuerà delle modifiche.

3) Se devi modificare uno snippet di codice e riesci a capire cosa fa dal codice senza commenti vuol dire che per te sarà facile modificarlo, altrimeni no e non ti basterà un commento descrittivo per colmare il gap.

4) Uso dei commenti per separare la logica di un lungo anzi lunghissimo metodo, del tipo "qui faccio questo" e "qui faccio quest'altro", quando basterebbe separare la logicain più metodi ogniuno con un nome appropriato.

Ripeto, non voglio dire che i commenti non servono, ma voglio dire che in prima battuta è meglio scrivere codice auto-esplicativo e decorarlo con dei commenti per casi più complessi/delicati.
09/06/2008 20:04 | Matteo Baglini
Gravatar

# re: Il codice non può essere auto-commentante

ti dico la verità, uso molto di rado i commenti, solo in casi eccezionali in cui, realmente, vale la pena segnalare qualcosa che non può essere capita dal codice.

lavorando da un po' anche come "mentore", con sviluppatori con diversa esperienza e formazione, mi accorgo che anche loro non si oppongono, anzi capiscono il valore di scopire *nel codice* quell'informazione che avrebbero messo in un commento.

ciao
-papo-
09/06/2008 20:34 | papo
Gravatar

# re: Il codice non può essere auto-commentante

Fondamentalmente non d'accordo.

Solitamente i pezzi di codice commentato sono quelle meno chiare e, almeno l'80% dei commenti che ho trovato, se rilevato inutile.
09/06/2008 23:29 | Salvatore Di Fazio
Gravatar

# re: Il codice non può essere auto-commentante

Fondamentalmente, sono molto in linea con Matteo e papo, nel senso che personalmente ho bisogno di commentare solo la' dove il disegno non e' chiaro (a colpo d'occhio), ovvero il codice si "incasina".

Detto al contrario, commento solo la' dove il codice non parla da se' (che e' appunto la tesi opposta a quella espressa da marco), e quindi ogni commento e' in realta' un place-holder per una ristrutturazione futura.

Ci tengo a precisare che e' un "risultato" (per come la vedo, almeno) al quale sono giusto dopo anni di sforzi, e che implica un approccio molto "disciplinato" (non mi dilungo di piu') allo sviluppo di codice.

Comunque la mia osservazione generale, al di la' delle modalita' e dei casi specifici, e' piu' che altro nel fatto che "il codice dovrebbe parlare per se'" e' una best-practice. Corollario: i commenti puzzano... ;)

-LV
09/06/2008 23:30 | LudovicoVan
Gravatar

# re: Il codice non può essere auto-commentante

P.S.

> implica un approccio molto "disciplinato" (non mi dilungo di piu') allo sviluppo di codice.

Magari aggiungo solo che "per non scrivere commenti" sono comunque inflessibile sulla documentazione di analisi (sempre e comunque presente, anche se in iterazione con il resto) e su quella di design (per quei componenti la cui complessita' e' non banale, tipo macchine a stati o algoritmi particolari, oppure gli eventuali protocolli ad-hoc, ecc. ecc.). Per "il resto", il codice dovrebbe parlare da se', come un bel romanzo... ipertestuale.

In questa ottica, e' banale che i commenti si riducano a place-holder in previsione di future ristrutturazioni. Questo significa che qualche (sporadico) commento e' anche accettabile in un un code base per una certa iterazione, magari da rivedere nella iterazione successiva. Ma la funzione dei commenti in questo scenario, potrei dire, e' appunto quella di segnalare "una chiusura che non c'e'".

-LV
10/06/2008 02:11 | LudovicoVan
Gravatar

# re: Il codice non può essere auto-commentante

Concludo la panoramica, anche a mio personale uso, notando che la "chiusura" in questione puo' avvenire essenzialmente in due modi: o diventa una ristrutturazione verso codice chiuso/leggibile, oppure diventa un documento di design; nonche' ovviamente i casi misti.

-LV
13/06/2008 19:23 | LudovicoVan
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET