# Indentazione

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 sorgente.
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

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

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

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

Si consideri il seguente esempio di pseudocodice:
* SE età < maggioreEtà ALLORA
* SE età < etàMinima ALLORA
* SCRIVI 'Spiacente, non puoi lavorare'
* ALTRIMENTI
* SCRIVI 'Puoi lavorare come apprendista'
* FINE-SE
* ALTRIMENTI
* SCRIVI 'Puoi lavorare!'
* 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:
* SE età < maggioreEtà ALLORA
* SE età < etàMinima ALLORA
* SCRIVI 'Spiacente, non puoi lavorare'
* ALTRIMENTI
* SCRIVI 'Puoi lavorare come apprendista'
* FINE-SE
* ALTRIMENTI
* SCRIVI 'Puoi lavorare!'
* FINE-SE

### Varianti

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):

### Linguaggi con indentazione significativa

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

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.