El propósito de la notación húngara es codificar información en el identificador que de otro modo no puede codificarse en el sistema de tipos. Mi propia opinión es que si esta información es lo suficientemente importante como para codificarse, entonces es lo suficientemente importante como para codificarse en el sistema de tipos, donde puede verificarse correctamente. Y si la información no es importante, ¿por qué diablos quieres desordenar tu código fuente con ella?
O, para decirlo de manera más sucinta: la información de tipo pertenece al sistema de tipos. (Nota: no tiene que ser un sistema de tipo estático . Siempre que detecte los errores de tipo, no me importa cuándo los detecte).
Un par de otras respuestas mencionaron las Unidades de medida como usos aceptables de la notación húngara. (Estoy un poco sorprendido de que nadie haya mencionado el Orbitador Climático de Marte de la NASA todavía, ya que eso parece aparecer todo el tiempo en las discusiones sobre la notación húngara).
Aquí hay un ejemplo simple en F #:
[<Measure>] type m
[<Measure>] type ft
let someLength = 48.15<m>
let someOtherLength = 16.2342<ft>
someLength + someOtherLength
// someLength + someOtherLength
// -------------^^^^^^^^^^^^^^^
// error FS0001: The unit of measure 'ft' does not match the unit of measure 'm'.
Mira, mamá, ¡no hay húngaros!
Si yo fuera a utilizar la notación húngara en lugar de tipos aquí, que no me ayudaría un bit:
let mSomeLength = 48.15
let ftSomeOtherLength = 16.2342
mSomeLength + ftSomeOtherLength
// > val it : float = 64.3842
El compilador lo dejó pasar. Ahora estoy confiando en un humano para detectar lo que es esencialmente un error tipográfico. ¿No es eso para lo que es un corrector de tipo?
Aún mejor, usando el lenguaje de programación Frink :
someLength = 48.15m
someOtherLength = 16.2342ft
someLength + someOtherLength
// 53.09818416 m (length)
// Wanna know the answer in a good old fashioned American unit?
someLength + someOtherLength -> yd
// 58.06888031496062992
// Are you an astrophysicist?
someLength + someOtherLength -> parsec
// 1.7207949554318336148e-15
// ... or a fundmentalist Christian who refuses to use units invented
// less than 2000 years ago?
someLength + someOtherLength -> biblicalcubits
// 95.893563822870765006
Entonces, en resumen: no me gusta la notación húngara. Nunca deberías usarlo.
Dicho esto, creo que usar la notación húngara es una buena idea. ¿Esperar lo?
¡Sí! En este caso particular , mencionaste:
Además, la mayor parte de nuestro código tiene que ejecutarse en algunos DSP raros, donde un concepto como bool o float no existe de todos modos
¡Pero ese es precisamente el único caso de uso sensato para la notación húngara!
PD: Recomiendo sinceramente mirar a Frink. Su manual contiene algunos de los chistes de pedo más increíbles de la historia. También es un lenguaje genial :-)