User Tools

Site Tools


tesi:codice

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
tesi:codice [2019/08/27 16:44] – created morenotesi:codice [2019/11/11 15:57] moreno
Line 7: Line 7:
 I programmi devono compilare correttamente senza warning (e ovviamente senza errori). Nel caso di programmi in C/C++ compilati con ''gcc'', ciò significa che i programmi devono compilare senza warning passando i flag ''-Wall -Wpedantic''. È sempre opportuno inoltre specificare lo standard che si vuole rispettare; ad esempio, se il proprio programma è scritto in C99, suggerisco di compilare con: I programmi devono compilare correttamente senza warning (e ovviamente senza errori). Nel caso di programmi in C/C++ compilati con ''gcc'', ciò significa che i programmi devono compilare senza warning passando i flag ''-Wall -Wpedantic''. È sempre opportuno inoltre specificare lo standard che si vuole rispettare; ad esempio, se il proprio programma è scritto in C99, suggerisco di compilare con:
  
-''gcc -std=c99 -Wall -Wpedantic prova.c''+''gcc -std=c99 -Wall -Wpedantic ...''
  
 Se invece si programma in ANSI C, suggerisco di usare: Se invece si programma in ANSI C, suggerisco di usare:
  
-''gcc -std=ansi -Wall -Wpedantic prova.c''+''gcc -std=ansi -Wall -Wpedantic ...''
  
 (esistono parametri analoghi per le varie versioni del C++). (esistono parametri analoghi per le varie versioni del C++).
Line 57: Line 57:
 == Esempio di commenti inutili DA EVITARE == == Esempio di commenti inutili DA EVITARE ==
  
-<code Java+<code C
-v = v + 1;    /incrementa v +v = v + 1;    /incrementa v */ 
-if ( v>10 ) { /se v e' maggiore di 10 +if ( v>10 ) { /se v e' maggiore di 10 */ 
-   v = 0;     /setta v a zero+   v = 0;     /setta v a zero */
 } }
-G.Kruskal(v); /esegui l'algoritmo di Kruskal+Kruskal(G,v); /esegui l'algoritmo di Kruskal */
 </code> </code>
  
 == Esempio di commenti appropriati == == Esempio di commenti appropriati ==
  
-<code Java+<code C
-/Individua la posizione i del primo valore +/Individua la posizione i del primo valore 
-// negativo nell'array a[]; al termine si ha + negativo nell'array a[] di lunghezza n 
-// i == a.length se non esiste alcun + al termine si ha i == se non esiste alcun 
-// valore negativo.+ valore negativo. 
 + */
 int i = 0; int i = 0;
-while ( i < a.length && a[i] >= 0 ) {+while ( i < && a[i] >= 0 ) {
     i++;     i++;
 } }
Line 88: Line 89:
 Il codice dovrebbe essere leggibile su una finestra larga 80 caratteri. I monitor moderni sono molto più larghi, ed è facile lasciarsi prendere la mano utilizzando tutta la larghezza dello schermo. Così facendo, però, le righe di codice e i commenti risultano troncati, o vengono mandati a capo, se il codice viene leggo usando una finestra più stretta.  Il codice dovrebbe essere leggibile su una finestra larga 80 caratteri. I monitor moderni sono molto più larghi, ed è facile lasciarsi prendere la mano utilizzando tutta la larghezza dello schermo. Così facendo, però, le righe di codice e i commenti risultano troncati, o vengono mandati a capo, se il codice viene leggo usando una finestra più stretta. 
  
-L'ampiezza di 80 caratteri è [[https://en.wikipedia.org/wiki/Characters_per_line|un retaggio del passato]] che però risulta comodo. Personalmente, trovo difficile leggere codice sorgente scritto usando linee troppo lunghe, e per questo mi attengo sempre alla regola tacita degli 80 caratteri.+L'ampiezza di 80 caratteri è [[https://en.wikipedia.org/wiki/Characters_per_line|un retaggio del passato]] che però risulta comodo per [[https://stackoverflow.com/questions/110928/is-there-a-valid-reason-for-enforcing-a-maximum-width-of-80-characters-in-a-code/111009#111009|diversi motivi]]: 
 + 
 +  * Il codice non va a capo se viene incollato in un messaggio (solo testo) di posta elettronica; 
 +  * Il codice risulta più leggibile rispetto al caso in cui si usino linee lunghe, dato che non è necessario spostare lo sguardo continuamente a destra sinistra; 
 +  * È possibile mantenere più finestre affiancate sui monitor moderni, se lo si desidera. 
 + 
 +Si tenga presente che, sebbene i monitor moderni abbiano guadagnato risoluzione e dimensione, i nostri occhi sono rimasti sempre gli stessi. 
 + 
 +=== Se possibile, rendere disponibile il codice con una licenza libera === 
 + 
 +Sebbene non indispensabile, suggerisco di rendere disponibile il proprio codice secondo una licenza libera. Alcuni esempi di licenze libere: 
 + 
 +  * [[https://www.gnu.org/licenses/gpl.html|GNU GPL]], [[https://www.gnu.org/licenses/lgpl.html|LGPL]], [[https://www.gnu.org/licenses/agpl.html|AGPL]] (preferibilmente versione 3 o successive); 
 +  * [[https://directory.fsf.org/wiki/License:BSD-3-Clause|BSD License]] (ne esistono diverse versioni); 
 +  * [[https://creativecommons.org/|Creative Commons]] (usata prevalentemente per prodotti diversi dal codice sorgente; evitare se possibile la clausola "non-commercial"). 
 +  * [[https://opensource.org/licenses/MIT|MIT License]] 
 + 
 +In [[https://opensource.org/licenses|questa pagina]] si trovano elencate ulteriori licenze comunemente usate. Personalmente tendo a preferire la licenza GPLv3+ (GPL versione 3 o successive), ma non impongo nessun vincolo a riguardo; si può anche decidere di non rendere il codice pubblicamente accessibile. 
 + 
 +Se si intende usare una licenza libera, occorre inserire il sunto della licenza in un commento all'inizio di ogni file sorgente (ciascuna licenza ha il proprio "boilerplate"), e includere il testo completo della licenza in un file di testo (normalmente chiamato "LICENSE") nella directory radice dell'archivio contenente i sorgenti.
  
tesi/codice.txt · Last modified: 2024/02/28 12:23 by moreno

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki