Il tab esprime il livello di indentazione come informazione semantica, non una misura rigida di spazi.
Con le tabulazioni, l’indentazione diventa un segnale logico: un livello, un carattere. Ognuno può visualizzare 2, 4 o 8 colonne senza toccare il codice, preservando l’intento originale e riducendo le divergenze tra ambienti. In code review e diff, questo si traduce in meno rumore visivo e maggiore chiarezza sul cambiamento reale. La pratica “tab per l’indentazione, spazi per l’allineamento” mantiene gli allineamenti stabili pur lasciando libera la scelta di larghezza.
Le tabulazioni migliorano accessibilità e comfort: stessa base di codice, resa visiva personalizzabile senza cambiare un byte.
Chi ha esigenze visive diverse o schermi di dimensioni differenti può regolare la larghezza del tab per leggere meglio, evitando wrapping e scroll eccessivi. Questo non produce commit cosmetici né conflitti: l’aspetto si adatta localmente nell’editor. La personalizzazione è supportata nativamente praticamente ovunque (EditorConfig, IDE moderni, terminali). Un team eterogeneo resta allineato sullo stesso sorgente, ognuno con la resa più leggibile per sé.
Un tab al posto di 2–4 spazi riduce dimensioni e rumore nei diff, con benefici cumulativi su repo, CI e code review.
Un livello di indentazione con 4 spazi sono 4 byte; con un tab è 1 byte: si risparmiano 3 byte per livello per riga. In un progetto con 300.000 righe e 1,5 livelli medi, l’ordine di grandezza del risparmio è di ~1,35 MB, oltre a delta più piccoli per Git e trasferimenti marginalmente più veloci in CI. Meno caratteri ripetuti significano diffs più puliti quando si ritocca la struttura, meno “churn” cosmetico e blame più significativo. Anche i tool di compressione e deduplica dei VCS lavorano meglio su pattern più compatti.
L’ecosistema di strumenti e standard favorisce i tab in contesti chiave (Makefiles, gofmt, Linux kernel), riducendo attriti pratici.
I Makefile richiedono tab per le ricette: abbracciare i tab elimina una fonte comune di errori sottili. gofmt (Go) produce tab per l’indentazione, garantendo uniformità automatica; il kernel Linux adotta tab di ampiezza 8 come stile consolidato. Allinearsi a questi strumenti significa meno eccezioni, meno configurazioni ad hoc e più interoperabilità. Con EditorConfig (indent_style = tab) il progetto codifica esplicitamente la scelta, e tutti gli editor si adeguano senza frizioni.