Magic number

Da Wikipedia, l'enciclopedia libera.

In informatica, parlando di magic number si possono intendere due differenti significati:

  • una sequenza di bit, normalmente posta prima della sequenza di dati, che serve per definire il formato in cui i dati sono memorizzati.
  • un numero o una stringa ripetuta più volte nel codice sorgente di un programma a cui non è attribuito un significato esplicito.

Indicatore di formato

I magic number sono nati negli ambienti Unix per identificare il formato dei file binari e per la gestione dei dati nella memoria. Oggi la maggior parte dei formati del file hanno un magic number, costituito da un numero di byte variabile (solitamente da 2 a 10). Viene anche utilizzato nei protocolli di rete, per identificare il protocollo o errori nella trasmissione dei dati.

Sebbene quasi tutti formati di file siano identificati da un magic number, la Microsoft sin dalle prime versioni del suo sistema operativo DOS ha deciso di adottare un nuovo identificativo: l'estensione. Ancora oggi, i sistemi operativi Microsoft non utilizzano il magic number per dedurre il formato di appartenenza di un determinato file, ma appunto le estensioni. I magic number possono comunque essere utili per definirne la versione.

Tipologie

I file immagine GIF, per esempio, cominciano sempre con la stringa ASCII GIF87a o GIF89a che definisce lo standard al quale il file aderisce.

Le classi Java compilate hanno il magic number CAFEBABE, espresso in notazione esadecimale. Probabilmente è un altro riferimento al caffè che di Java è simbolo e nome e all'ipotetica cameriera che lo serve.

I file ZIP cominciano tutti per PK (in esadecimale 50 4B), dalle iniziali del nome dell'ideatore Phil Katz.

Costanti senza nome

Il secondo uso del termine è prettamente dispregiativo: inserire nel codice delle costanti (siano esse numeriche o di tipo stringa) senza dare loro un significato esplicito porta ad avere codice poco leggibile.

È buona norma dare a tali costanti un nome ed un significato esplicito, possibilmente all'inizio del codice, e utilizzare sempre tale definizione. I problemi legati all'uso di magic number sono:

  • difficoltà di lettura e, quindi, di manutenzione del codice: una stringa o un intero inserito all'interno del programma senza una denominazione parlante, sono difficili da interpretare.
  • possibile inconsistenza del codice: se la costante è ripetuta n volte, la sua variazione richiede n sostituzioni. Se una di esse salta si dà origine a bug.
informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica