Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Capitolo 15<br />
Stile di programmazione<br />
Lo stile di programmazione è un problema che verrà trattato brevemente in questo capitolo.<br />
Per “stile di programmazione” si intendono tutte le scelte stilistiche che sono relative al modo<br />
di presentare il codice sorgente.<br />
Qualunque sia lo stile adottato <strong>per</strong> la scrittura di un programma, è fondamentale essere<br />
coerenti, facendo rientrare i blocchi sempre allo stesso modo, qualunque esso sia. Lo stile più<br />
diffuso è quello di Kernighan e Ritchie, che prevede di aprire la parentesi graffa a fine riga e<br />
chiudere la parentesi graffa da sola in una riga a se stante. La prefernza stilistica non è molto<br />
importante, quanto invece lo è la coerenza in tutto il codice sorgente.<br />
L’indentazione è una tecnica importante <strong>per</strong> la stesura di un sorgente chiaro. Per indentazione<br />
si intende il rientro dei blocchi di codice <strong>per</strong> mezzo di spazi o tabulazioni inserite ad inizio della<br />
riga. Qualunque sia il livello di rientro dei blocchi, 2, 4 o 8 caratteri, il carattere TAB vale 8<br />
spazi1 .<br />
Le funzioni vanno mantenute brevi e comprensibili. Se una funzione diventa troppo complessa<br />
è meglio dividerne il codice in blocchi concettualmente separati, implementandoli sotto forma di<br />
funzioni distinte.<br />
L’utilizzo delle strutture dati migliora la chiarezza e la manutenibilità del programma. Per<br />
gestire le strutture dati, è generalmente meglio definite creatori e distruttori <strong>per</strong> gli oggetti invece<br />
che usare variabili globali. Ciò significa che è preferibile implementare delle funzioni dedicate<br />
all’inizializzazione dei campi di una struttura, e all’eventuale allocazione/deallocazione della<br />
memoria relativa, invece che dichiarare variabili globali allocate staticamente.<br />
E’ bene controllare e gestire opportunamente sempre tutti gli errori: ogni funzione che viene<br />
chiamata può fallire, e quindi il codice chiamante deve verificare il valore di ritorno e comportarsi<br />
in maniera appropriata, che spesso vuol dire propagare l’errore <strong>alla</strong> funzione chiamante.<br />
La chiamata <strong>alla</strong> funzione exit dall’interno di una funzione in caso di errore è da sconsigliare,<br />
ed è meglio lasciate decidere al programma principale come gestire l’errore.<br />
Commentare bene il codice: in linea di massima, evitare costrutti particolarmente furbi, che<br />
possano essere difficili da interpretare da altri programmatori o dallo stesso programmatore a<br />
distanza di tempo. Se tali costrutti vengono utilizzati, è bene spiegare il <strong>per</strong>ché di tale scelta.<br />
Specificare sempre i termini di licenza nel file sorgente. In assenza di <strong>per</strong>messi specifici vale<br />
la clausola tutti i diritti riservati, ma anche se questa è la vostra intenzione è sempre meglio<br />
specificarlo <strong>per</strong> chiarire ogni dubbio.<br />
1 Attenzione <strong>alla</strong> configurazione predefinita dell’ editor che potrebbe essere scorretta.<br />
147