Notazione ungara: un bene o un male?

| sabato 18 febbraio 2012 | |
Visto il successo ed i numerosi attestati di soddisfazione circa l'ultimo post di "programmazione teorica" (Linguaggi di sviluppo: tipizzazione forte o debole?) ho pensato di dare seguito ad una serie di post che affrontino alcuni aspetti della programmazione forse meno conosciuti o poco discussi, ma con i quali ogni programmatore si trova giocoforza prima o poi a doversi confrontare.

L'argomento di discussione di oggi è la notazione ungara (o notazione ungherese) della varibili, ossia quella convensione usata in programmazione, secondo la quale nel nome della varibile è necessario indicare il suo tipo.

La notazione è stata ovviamente pensata per essere indipendente dal linguaggio ed è stata molto utilizzata nei vecchi linguaggi come il VB6 i quali, non supportando la tipizzazione forte (vedi post precedente per i dettagli sull'argomento) anche se non è mai stata ratificata alcuna specifica ufficiale circa i prefissi da utilizzare, generando quindi un po' di anarchia.

Alcuni esempi:
  • lngCount: numero long
  • strTemp: stringa
  • hwndWindows: handle di una finestra
  • bFlag: variabile boolean
Come si diceva poco sopra, la notazione ungara è stata a lungo diffusa tra i programmatori dei linguaggi senza tipizzazione forte, perchè di ausilio durante le fasi di scrittura del codice perchè si aveva immediatamente sott'occhio, nel nome della variabile stessa, il suo tipo, aiutando quindi a prevenire triviali errori di cast.

Il mondo informatico è comunque sempre stato spaccato circa l'utilità della notazione ungara ed anche parecchie personalità importanti (come Linus Torvald) si sono schierate contro:

Inserire il tipo della funzione nel suo nome (la cosiddetta notazione ungara) è una scemenza: il compilatore conosce comunque il tipo e lo può verificare, e l'unica cosa che fa è confondere il programmatore. Non stupisce che la Microsoft [che usa questa notazione] faccia programmi difettosi.
Personalmente ho sempre trovato la notazione ungara troppo "pesante", il codice diventa di difficile lettura oltre che di difficile manutenzione: si ipotizzi ad esempio di avere un contatore che dal tipo Int deve passare ad un tipo Long, per questioni di dimensioni: non sarà sufficiente, volendo continuare a seguire la notazione ungara, semplicemente cambiare il tipo della variabile ma sarà anche necessario rinominarla, operazione che, anche con l'ausilio di un editor avanzato che supporti il renaming automatico delle varibili, richiederà comunque un certo tempo mentre invece, se non si dispone di un editor di questo tipo, sarà necessario operare manualmente, con tutti i rischi ed i possibili errori di regressione che una operazione del genere potrebbe introdurre.

Voi cosa ne pensate? Pro o contro notazione ungara?

Articoli correlati per categorie



4 commenti:

Lorenzo Says:
18 febbraio 2012 18:57

La notazione ungherese rende il codice meno leggibile, Quando si usa un editor avanzato che mostra la documentazione su ogni procedura o si ha bene in mente quello che si sta facendo, la notazione ungherese diventa solo superflua...

Alberto Armida Says:
18 febbraio 2012 18:59

Concordo pienamente! non ti dico il nervoso che provo quando magari, aprendo codice in C# piuttosto che in Java o altri linguaggi avanzati, mi trovo variabili "pregne di significato" come strTemp, bFlag, lngCount...

Aldo Prinzi Says:
18 febbraio 2012 20:10

La notazione ungara è un inutile eccesso, punto.
(czzzzzzzz$)

Alberto Armida Says:
18 febbraio 2012 20:23

Sapevo che con te avrei sfondato una porta aperta Aldo... :)

Posta un commento