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
tesi:codice [2019/08/27 16:44]
moreno created
tesi:codice [2019/11/11 15:58] (current)
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 19: Line 19:
 L'uso di nomi inappropriati rende il codice difficile da comprendere e da valutare). Per rendersi conto di ciò, chi direbbe che questa funzione: L'uso di nomi inappropriati rende il codice difficile da comprendere e da valutare). Per rendersi conto di ciò, chi direbbe che questa funzione:
  
-<​code>​+<​code ​C>
 int cancella( double trovato, double tentativo[],​ int n, int terzo, int quarto ) int cancella( double trovato, double tentativo[],​ int n, int terzo, int quarto )
 { {
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.1566917095.txt.gz · Last modified: 2019/08/27 16:44 by moreno