Notazione ungara: un bene o un male?

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 longstrTemp: stringahwndWindows: handle di una finestrabFlag: variabile booleanCome 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?