|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 163
|
[Commentare codice di un programma]
ciao ragazzi vorrei chiedervi quale il miglior modo (in caso contrario ognuno puo suggerirmi il suo) per commentare il codice che si sta scrivendo (in questo caso in vb.net) che costituisce le classi ed i metodi. Quindi a prescindere da eventuali commenti particolari, ma quelli che descrivono una classe oppure un metodo. Quando intendo per modo intendo anche come è indentato il commento, anche esteticamente quindi..
supponiamo che si abbia: Codice:
Public Class nomeclasse
Public Function nomefunzione(ByRef parola As String) As Integer
...
end function
end class
Come lo commentate? Ultima modifica di soundsgood : 08-11-2010 alle 17:45. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Se hai bisogno di commentare un codice significa che il codice non e' autoesplicativo e non e' stato scritto bene.
gli unici commenti indispensabili sono quelli che spiegano il motivo, il perche' e' stata fatta una scelta, e non che cosa e' stato scelto. Tali commenti sono pero' piu' di business che di sviluppo, e sono da limitare quanto piu' possibile.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Io lavoro tutti i giorni con codice autoesplicativo di cui però non c'è traccia di documentazione, per capire cosa fa anche un piccolo un software con 200 classi devo spulciarmelo tutto ben bene. Quanto sarebbe più rapida la ricerca su una documentazione testuale? Per sapere che un determinato metodo comporta internamente l'invio di una email o che chiama una precisa stored procedure, una documentazione testuale consultabile da chiunque, magari dal DBA, fa schifo? Quote:
Cosa succede dopo anche un anno (per non dire di più) che il codice è stato scritto e ci deve mettere le mani qualcuno che non l'ha mai visto? Magari a prima vista possono esserci delle scelte nel codice di dubbia utilità ma che rispettano un preciso requisito che nessuno ovviamente ricorda più a distanza di qualche tempo. Oppure grazie ai commenti ci si può accorgere di codice che ha completato la sua funzione e che quindi è possibile rimuovere, senza i commenti rimarrebbe li in eterno perchè nel dubbio è meglio lasciare le cose come stanno. |
||
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Una funzione/metodo deve fare una cosa sola, e cosa fa deve potersi capire dal nome del metodo stesso. Il tempo delle funzioni monolitiche e' finito da un pezzo. Il tempo dei commenti pure, tanto piu' che i commenti subiscono una obsolescenza molto veloce, e nessuno li aggiorna mai. Rischiano di essere addirittura dannosi. Melgio spendere tempo per un codice che non ha bisogno di essere commentato. Quote:
Per il resto come lavori o di cosa hai bisogno tu frega poco. La community ha deciso.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
||
|
|
|
|
|
#5 | |||||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Cosa fa il metodo di business? Se non apri il codice non lo sai e in realtà se non apri il codice non sai nemmeno che è quel particolare metodo quello che ti interessa, quindi molto probabilmente la ricerca comuincerà da un livello ancora superiore, la gui o la pagina web. Quote:
Quote:
Quote:
Oppure in un ambiente SOA con centinaia di servizi quale sarà mai il servizio più adatto da richiamare? Ah boh aspetta che me li guardo tutti, così tra un anno sono ancora qui che apro la millesima istanza di Netbeans o Visual Studio! Quote:
Te continua pure a divertirti ad aprire l'editor per rispondere a delle banalissime domande sul funzionamento di un programma a cui può dare risposta anche una semplice documentazione. A me se arriva del codice non documentato lo mando indietro e non faccio partire nemmeno il pagamento del lavoro. |
|||||
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1625
|
Per la scrittura del codice queste sono buone norme che valgono almeno per tutti i linguaggi di derivazione C http://www.python.org/dev/peps/pep-0008/.
Per la documenzazione esterna inizia da qui http://programmazione.html.it/guide/leggi/41/guida-uml/ Io poi tendo ad essere sovrabbondante con i commenti, meglio un'ovvietà in più che tanto si può evitare di leggere se già si ha capito il funzionamento che una in meno che ti fa perdere tempo. Se poi sono programmi per l'università da consegnare ad un professore, abbonda pure. Ultima modifica di killercode : 09-11-2010 alle 15:24. |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Direi che dipende molto dal tipo di programma che si deve scrivere.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Quote:
Intanto definire "codice autoesplicativo" e indicare se esiste; personalmente ci metto 1-2 minuti a ricordare il funzionamento di una MIA classe non commentata quando ci rimetto mano dopo molto tempo... minuti nei quali rischio di fare cagate o rovinare il design della classe modificandola male. Una sola linea di commento che indichi lo scopo a parole e i warning, permette di sorvolare completamente la lettura del codice. Ovviamente la cosa è ancora più vantaggiosa nel caso di un altro tizio del team, che il tuo codice lo deve proprio capire daccapo per usarlo, anche se supponiamo che le funzioni siano chiarissime, one-liner e tutto il resto. Ecco, il mio punto di vista è "il codice DEVE essere chiaro e autoesplicativo, ma deve avere ANCHE i commenti" Poi ci sono tante cose che non emergono dal codice, tipo l'architettura di massima del sistema, il suo modo d'uso, use case specifici, tutte cose che sono particolarmente utili per indirizzare l'utente verso il "modo unico" di fare le cose che avevi pensato, in modo da distoglierlo da hacks assortiti o soluzioni possibili ma inefficienti o ineleganti, o semplicemente indirizzarlo verso la giusta classe e la relativa documentazione. Questo lo so perchè lavorando con un progetto enorme tipo Ogre, spesso è difficile anche solo capire, dato un obiettivo che hai, quale sarebbe la classe che lo realizza. Spesso ci sono 2 o 3 modi. Poi il nostro "pro programmer" senza documentazione nè descrizioni di massima che fa, si legge tutto il codice di tutte le classi che a occhio hanno una vaga assonanza con quello che pensa? Direi che non ha molto senso, e lo so perchè con Ogre mi è toccato farlo qualche volta, perdendoci le ore Per cui la documentazione serve eccome, io tra assert, tests, disegnini e commenti ne produco parecchia anche per progetti dove lavoro solo io. Ultima modifica di Tommo : 09-11-2010 alle 16:25. |
|
|
|
|
|
|
#9 | ||||
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Sono anni che la tendenza e' questa, e l'Italia sara' un po' in ritardo come al solito. Ecco 4 parti dello stesso codice preso dal source control in tempi diversi Quote:
Quote:
Quote:
http://www.makinggoodsoftware.com/20...ing-good-code/ "Commenting is Evil" o "Comments are evil" e' una frase che oramai non si sente neppure piu' tanto e' entrata in giro. E soprattutto il commentare il prototipo di un metodo, da cui questo Thread e' partito.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 09-11-2010 alle 22:13. |
||||
|
|
|
|
|
#10 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Se qualcuno chiedesse al programmatore: "mi fai il resoconto di quello che fa questo programma?" (con lo scopo di razionalizzare un'architettura che va ben oltre il singolo applicativo) vedrai come bestemmia se il programma in questione è stato scritto a 20 mani, è vecchio di anni e non ha uno straccio di commenti. Con la documentazione fatta a modo potrebbe risponderti: "questo è l'indirizzo della documentazione generata automaticamente dal build server, leggitela e non rompere le p@££e con queste domande idiote". Ma il bello poi è che tutti si lamentano che i software open source sono per la maggior parte scarsamente documentati, mentre chi ci lavora apprezza ad esempio la documentazione fornita da Msdn, ma anche la documentazione Java completa ed esauriente. Non si capisce perchè mai l'approccio mentale debba essere differente per quello che viene scritto in prima persona. Solo per fatica? Allora se fa fatica forse è il caso di pensare di svolgere un altro mestiere, perchè non è un atteggiamento molto professionale. Quote:
Niene Java doc, niente Msdn, niente Qt doc, niente di niente. Ritieni anche te che la documentazione qualcosa di completamente inutile? |
||
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
![]() Diciamo che e' molto meno utile di quanto si pensi, che in passato e' stato largamente sopravvalutato e che nell'Agile non e' affatto ben vista. Molto meglio un codice ben scritto che un codice mediocre e commetato per supplire a mancanza di struttura.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 10-11-2010 alle 00:39. |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Mah, a me sembra che l'agile abbia parecchi meriti, ma le sue belle cantonate se le prende, così come ogni corrente estrema
Come dice giustamente il mio quasi omonimo, è immediato notare che ogni programmatore è un'avido consumatore di documentazioni altrui, che siano MSDN, Java doc, Qt doc, apple.doc, doxygen assortiti e quant'altro. Dover dipendere da un progetto di terze parti di cui hai solo il codice è la peggior cosa che possa capitare in termini di produttività, altro che agile. Bello perdere 24356 ore per capire da che parte dovrei iniziare a leggere il codice, quando bastava un doc riassuntivo sulla wiki corredato di esempio di uso comune. A proposito di apple dev, si vede quanto va a ruba Android tra gli sviluppatori, con la sua documentazione "agile" e "concisa" ![]() La qualità media dello store parla chiaro, è zeppo di apps fatte a tentoni e la coerenza su interfacce e prestazioni è del tutto di là da venire. E io non credo proprio che dipenda solo dalla mancanza di filtri da parte di Google... Ultima modifica di Tommo : 10-11-2010 alle 00:55. |
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Altro esempio
Quote:
Quote:
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
||
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Io condivido del tutto quello detto da gugoXX, personalmente posso dire che il codice scritto bene diventa praticamente leggibile come del testo e non necessita di alcun commento.
Giusto quelle rare volte che, vuoi per forzare qualche pseudo "ottimizzazione" vuoi per qualche altro motivo, ti accorgi che il codice non sarebbe molto leggebile da terzi, quindi scrivi una righetta di commento, tutto qui. Anzi, molte volte mi trovo ad andare a guardare il source di qualche metodo di java(ad esempio della lib swing) per capire come funziona piuttosto che leggere la documentazione che spesso non è sufficiente. Ultima modifica di MEMon : 10-11-2010 alle 01:23. |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quando il codice scritto bene diventa di decine di migliaia (e oltre) di righe di codice, devi leggertele tutte! Ma dove lavorate, se arriva uno nuovo gli dite "toh leggiti tutte le 10000 righe di codice di questo programma che tanto sono scritte talmente bene da essere autoesplicative, una volta lette saprai esattamente cosa fa e a cosa serve e comprenderai i segreti dell'universo" ? |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
Io per ogni classe che scrivo, per ogni metodo che implemento 4 righe di commento su cosa fa (o dovrebbe fare) e cosa ritorna in ogni caso le scrivo. E riempo il codice di tutti i commenti possibili. |
|
|
|
|
|
|
#18 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21919
|
Quote:
I commenti sono fondamentali quando si lavora in team, un codice ti dà una sequenza di istruzioni ma, visto che per ogni problema non esiste una sola soluzione, essere obbligati a leggere il listato e tentare di comprendere la logica che ci stà dietro è un suicidio. se il codice non è commentato spesso l'unica soluzione è attaccarsi al telefono e chiamare, sempre se è possibile, chi ha scritto quella parte di codice. @gugoxx il mondo ideale è bello ma spesso i principi della buon programmazione vanno accantonati in favore dell'efficienza
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#19 | ||
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Se stai leggendo del codice stai già capendo quello che fa se è scritto bene, quindi il commento non serve quasi mai, NON ho detto mai, ma QUASI mai. Quote:
La verità sta nel mezzo, non dico di non scrivere mai niente, una righina a inizio metodo se volete ci sta, più che altro perchè molti ide te la fan vedere nel completamento automatico, quello che proprio non condivido è il commento in mezzo al codice, quello proprio non ci va se non in rarissimi casi per far capire una cosa che altrimenti non si capirebbe. PS. se il codice che si sta scrivendo è un Framework, SDK o una libreria allora va commentato tutto per bene, perchè essendo spesso slegata dal contesto, è più difficile capire cosa fa, e comunque essendo il suo scopo principale il poter essere utilizzato nel modo più semplice possibile, è ragionevole pensare che la documentazione ci deve essere, anche solo per dire come e quando è necessario utilizzare quello anzichè quell'altro. Ma se il codice è implementato dilungarsi sui commenti è utile solo se è scritto da cani. Ultima modifica di MEMon : 10-11-2010 alle 10:49. |
||
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Poi forse dipende anche dal linguaggio che si usa? Magari in C e C++ posso capire che il commento potrebbe essere utile ovunque
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:59.





















