18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!