Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Dubbio sulla Qualità del Codice - Per... Ehm... Codici molto lunghi? HOW-DO-IT?

Auron (15880 points)
50 126 194
in Es1 by (15.9k points)
Salve a tutti...
Ho appena riconsegnato l'Esercizio 1 dell'HW con i commenti fianco-riga per, appunto, migliorare la qualità di lettura e comprensione del mio codice...
Considerando la lunghezza del codice, però, (circa 300 righe!) ho pensato di commentare nel dettaglio tutte le righe della funzione principale e, nelle funzioni che essa richiama, commentare solo la riga in corrispondenza della definizione della funzione stessa scrivendo quello che fa ed utilizzando le stesse parole che nella funzione principale ho usato in corrispondenza dell'istruzione che richiama quelle determinata funzione, in moda da avere una "giunzione" tra funzione principale e funzioni secondarie.
Le righe di codice inserite nelle funzioni secondarie, però, non le ho commentate, perchè risulterebbe quasi più il lavoro di commento che quello di scrittura del codice...
Chiedo al Prof, o ai suoi collaboratori: potrebbe essere un buon metodo quello che ho utilizzato, per non gravare nè troppo sul tempo dedicato ai commenti, nè troppo sull'incomprensibilità del codice? (Come ho detto ho appena riconsegnato l'Esercizio 1, quindi dovreste aver modo di vedere cosa intendo).
Con una risposta qui, anche gli altri potrebbero farsi un'idea di come organizzare la cosa :)

Saluti al Forum :D

P.s. Ho usato troppe volte la parola "funzione", sorry Ahahahah
541 views
closed

3 Answers

Best answer
a
alex_err (5800 points)
1 3 32
by (5.8k points)
selected by
La vera domanda è: hai veramente bisogno di commentare ogni singola riga? Io mi limiterei a dare una descrizione alle funzioni secondarie (senza riscrivere la descrizione nella funzione dove le richiami), che già di loro dovrebbero avere un nome invocativo.

È inutile commentare ogni istruzione elementare. Se la logica dell'algoritmo è di difficile interpretazione allora ok, darei qualche informazione in più mirata a far capire il ragionamento seguito.

Di solito anche dare un nome significativo alle variabili aiuta. Ad esempio: suddividere la logica dei controlli condizionali in variabili. if isAlpha and isUppercase: [...] rende meglio rispetto a scrivere tutto il codice nel controllo.
Questo rende il codice auto-descrittivo.
Auron (15880 points)
50 126 194
by (15.9k points)
Grazie per la risposta :)
Terrò conto anche di questa opinione :)
s
simone (25820 points)
47 97 209
by (25.8k points)

Ottima risposta devil

AdrianH (840 points)
3 8 17
by (840 points)
Prova a creare funzioni, per righe,e poi per le colonne gira semplicemente la matrice, lo stesso per le diagonali e diagonali opposte, ti consiglio di usare numpy,se gia non lo usi, ha funzioni che ti permetto di fare qualunque movimento della matrice
Auron (15880 points)
50 126 194
by (15.9k points)
Scusami, ma non ho capito che cosa c'entra con quello che ho chiesto :)
Il mio programma funziona, ed eccellentemente direi, visti i tempi...
La mia domanda riguardava i commenti, e credevo fosse evidente dal contenuto di ciò che ho scritto :D
s
simone (25820 points)
47 97 209
by (25.8k points)
che ti sei fumato?
Auron (15880 points)
50 126 194
by (15.9k points)
Mi hai fatto morire ahahah
Xriuk (13590 points)
6 24 116
by (13.6k points)

Ti dico come commento di solito io:

  • Per ogni funzione (o quasi):
    • descrizione in una riga della funzione stessa
    • per ogni parametro: nome, tipo/i e descrizione
    • descrizione di eventuali return
  • Nelle funzioni principali (come possono essere es1(), es2() ed es3()) descrizione di blocchi di istruzioni, ad esempio: questa sezione legge il file, questa sezione crea la griglia, ...

Non ha senso commentare ogni singola riga di codice, perdi appunto più tempo che a scrivere il codice stesso...

Inoltre consiglio personalissimo io eviterei di fare dei commenti "fianco-riga" (che se ho capito bene sono quelli accanto ad ogni riga di codice), perchè li perdi nel testo, si confondono, io consiglio di lasciare una riga vuota prima di ogni commento relativo ad una sezione di codice, un po' a suddividere il codice:

[codice]

# commento
[codice]
Auron (15880 points)
50 126 194
by (15.9k points)
Grazie per la risposta pertinente e precisa...
Comunque ripeto, non commento TUTTE le righe di TUTTE le funzioni, perchè sarebbe appunto impossibile per il tempo...
Però di solito la Funzione principale è un insieme di richiami a funzioni secondarie, quindi normalmente non viene di una lunghezza allucinante...
Magari poteva essere interessante commentare cosa succede nelle righe della sola Principale, lasciando che la descrizione delle secondarie avvenga in un'unica riga all'inizio della funzione in questione...
Potrei essere d'accordo con te sul "fianco-riga", ma ti garantisco che sono una persona molto ordinata e sto attento a far in modo che anche i commenti "seguano" l'indentazione del codice e non si mischino con esso... Del genere:

Istruzione1                                    #Commento
Istruzione2                                    #Commento
For i in variabile:                           #Commento
      If i == qualcosa:                            #Commento
            print(i)                                           #Commento
      else:                                              #Commento
            pass                                              #Commento
return qualcosa                             #Commento

E' anche bello a vedersi ahahah
In ogni caso, scherzi a parte, il codice resta in assoluta evidenza rispetto al commento, anche perchè questo viene colorato di quel grigio quasi invisibile che non disturba la lettura :)
Xriuk (13590 points)
6 24 116
by (13.6k points)
Non saprei, secondo me se li metti "attaccati" poi si "mischiano" col codice (metti che lo apri con wordpad o blocco note, non un editor), se li metti staccati come hai scritto tu li differenzi, ma "perdi" il riferimento alle righe di codice (a quale riga si riferisce ogni commento (nel caso ti un'unica sezione lunga, piena di istruzioni sequenziali senza if o altro).
S
Stefano Urani (1940 points)
2 19 34
by (1.9k points)

Non so cosa sia meglio ai fini di questo corso. Il PEP8 dice questo:

Inline Comments

Use inline comments sparingly.

An inline comment is a comment on the same line as a statement. Inline comments should be separated by at least two spaces from the statement. They should start with a # and a single space.

Inline comments are unnecessary and in fact distracting if they state the obvious. Don't do this:

x = x + 1                 # Increment x

But sometimes, this is useful:

x = x + 1                 # Compensate for border


qua il link:
https://www.python.org/dev/peps/pep-0008/#comments