Indentazione

Da Wikipedia, l'enciclopedia libera.

L'indentazione (o indentatura) è l'inserimento di una certa quantità di spazio vuoto all'inizio di una riga di testo. In tipografia il termine corretto è rientro. Nell'ambito della programmazione, l'indentazione è una convenzione utilizzata per esprimere al meglio la struttura di un codice.

Si tratta di un requisito non obbligatorio per molti linguaggi di programmazione e viene spesso messo in secondo piano. Tuttavia, è fondamentale per incrementare la leggibilità del codice, in particolare delle strutture di controllo come le condizioni o i loop.

Tipografia[modifica | modifica wikitesto]

Nei testi stampati è prassi comune utilizzare il rientro per segnare visivamente l'inizio di ciascun paragrafo: la prima riga viene fatta iniziare più a destra rispetto alle altre, di una certa quantità fissa. Più raramente non si utilizza il rientro ma si inserisce tra un paragrafo e l'altro una certa (piccola) quantità di spazio verticale.

Il rientro viene inoltre applicato a righe o paragrafi dei quali si vuole marcare visivamente la distinzione dal resto del testo, ad esempio quando si tratta di una citazione di un brano tratto da un altro testo. In questo caso viene fatto rientrare l'intero paragrafo e non soltanto la prima riga, cioè di fatto il margine sinistro del testo viene spostato più a destra per tutta la lunghezza del paragrafo (solitamente si sposta anche il margine destro verso sinistra della stessa quantità). Inoltre, per rendere ancora più evidente la distinzione, spesso si utilizza anche un carattere tipografico più piccolo, oppure corsivo, e si lascia dello spazio vuoto prima e dopo il paragrafo.

Informatica[modifica | modifica wikitesto]

L'indentazione viene usata estensivamente nella scrittura del codice sorgente dei programmi per calcolatore, allo scopo di aumentarne la leggibilità, soprattutto nel contesto dei linguaggi strutturati: ogni riga viene indentata di un certo numero di spazi che dipende dalla sua posizione all'interno della struttura logica del programma.

L'uso dell'indentazione è estremamente diffuso e viene considerato come una norma fondamentale di buona programmazione. La maggior parte degli editor di testo moderni usati in programmazione e degli ambienti di sviluppo integrati forniscono una funzione di indentazione automatica del codice (spesso applicata automaticamente durante l'editing).

Descrizione della tecnica[modifica | modifica wikitesto]

La tecnica è basata sull'idea di usare gli spazi bianchi (in genere ignorati da compilatori e interpreti) allo scopo di separare più chiaramente le istruzioni e, in particolare, di rappresentare esplicitamente le relazioni di annidamento. In genere, l'indentazione segue la cosiddetta off-side rule, che consiste nell'anteporre a ogni istruzione una quantità di spazio bianco (spazi, tabulatori) proporzionale al numero di strutture di controllo o blocchi a cui tale istruzione appartiene.

Esempio[modifica | modifica wikitesto]

Si consideri il seguente esempio di pseudocodice:

  1. SE età < maggiore ALLORA
  2.     SE età < minima ALLORA
  3.         SCRIVI 'spiacente, non puoi lavorare'
  4.     ALTRIMENTI
  5.        SCRIVI 'puoi lavorare come apprendista'
  6.     FINE-SE
  7. ALTRIMENTI
  8.     SCRIVI 'Puoi lavorare!'
  9. FINE-SE

Nel frammento di codice riportato, l'indentazione del codice rende chiaro il fatto che la verifica di riga 2 viene fatta solo se ha avuto esito positivo quella di riga 1, ovvero che la seconda selezione è annidata nella prima. Questo sarebbe decisamente meno comprensibile se il codice fosse stato scritto senza indentazione:

  1. SE età < maggioreEtà ALLORA
  2. SE età < etàMinima ALLORA
  3. SCRIVI 'spiacente, non puoi lavorare'
  4. ALTRIMENTI
  5. SCRIVI 'puoi lavorare come apprendista'
  6. FINE-SE
  7. ALTRIMENTI
  8. SCRIVI 'Puoi lavorare!'
  9. FINE-SE

Varianti[modifica | modifica wikitesto]

Se il concetto generale dell'indentazione si può applicare a qualsiasi linguaggio di programmazione, la sintassi specifica di un linguaggio può suggerire varianti o richiedere raffinamenti della tecnica generale. Non raramente, per un singolo linguaggio esistono alcune varianti minori applicate da diversi programmatori. Per esempio, i due frammenti di codice che seguono mostrano due approcci diversi applicati nel linguaggio C per il posizionamento delle parentesi graffe (che rappresentano l'inizio e la fine dei blocchi):

 if (a < b) {
   a = 0;
   return b;
 }
 
 if (a < b)
 {
   a = 0;
   return b;
 }

Linguaggi con indentazione significativa[modifica | modifica wikitesto]

Esistono alcuni esempi di linguaggi in cui l'indentazione del codice è significativa, ovvero in cui gli spazi bianchi influiscono sull'interpretazione e l'esecuzione del programma da parte dell'interprete del linguaggio. Fra i più celebri si possono citare Occam, Haskell e Python. In questi linguaggi i blocchi di righe non vengono delimitati da appositi caratteri (ad esempio le parentesi graffe in C) o parole chiave (IF, THEN, ENDIF...) ma individuati appunto in base all'indentazione. Non è possibile quindi che una riga di codice abbia un'indentazione sbagliata, ovvero non corrispondente alla struttura logica del programma, in quanto è proprio l'indentazione stessa a determinare la struttura logica.

Stili di indentazione[modifica | modifica wikitesto]

Con il passare del tempo, si sono sviluppati moltissimi stili di indentazione differenti volti a venire incontro alle esigenze di qualsiasi programmatore per rendere il codice immediatamente comprensibile.

K&R[modifica | modifica wikitesto]

Lo stile K&R, così chiamato in quanto fu utilizzato da Kernighan e Ritchie nel libro Il linguaggio C, è comunemente utilizzato in C, C++, C# ed altri linguaggi. Tale stile prevede che:

  • Ogni funzione abbia la propria parentesi d'apertura sulla riga successiva alla sua intestazione e con la stessa quantità di rientri di quest'ultima, mentre la parentesi di chiusura su di una riga esclusiva e con lo stesso rientro di quella di apertura.
  • I blocchi all'interno della funzione presentino la parentesi d'apertura sulla stessa linea dell'intestazione e quella di chiusura su di una linea esclusiva, a meno che non ci sia un else o un while.

Un esempio pratico dello stile di indentazione K&R è il seguente:

int main (int argc, char *argv[])
{ // La parentesi d'apertura della funzione si trova su di un rigo dedicato
 
    if (x > 0) { // La parentesi d'apertura dei blocchi è sulla stessa riga dell'intestazione dello stesso
        x = 1;
    } // Parentesi di chiusura su riga esclusiva e stessi rientri
 
} // Parentesi di chiusura su riga esclusiva e stessi rientri

Voci correlate[modifica | modifica wikitesto]