La notación húngara solo tiene sentido en idiomas sin tipos definidos por el usuario . En un lenguaje funcional u OO moderno, codificaría información sobre el "tipo" de valor en el tipo de datos o clase en lugar de en el nombre de la variable.
Varias respuestas hacen referencia al artículo de Joels . Sin embargo, tenga en cuenta que su ejemplo está en VBScript, que no admitía clases definidas por el usuario (al menos durante mucho tiempo). En un lenguaje con tipos definidos por el usuario, resolvería el mismo problema creando un tipo HtmlEncodedString y luego dejaría que el método Write solo aceptara eso. En un lenguaje de tipo estático, el compilador detectará cualquier error de codificación, de forma dinámica obtendrá una excepción de tiempo de ejecución, pero en cualquier caso está protegido contra la escritura de cadenas no codificadas. Las anotaciones húngaras solo convierten al programador en un verificador de tipo humano, con el tipo de trabajo que normalmente se maneja mejor con el software.
Joel distingue entre "sistemas húngaros" y "aplicaciones húngaras", donde "sistemas húngaros" codifica los tipos integrados como int, float, etc., y "aplicaciones húngaras" codifica "tipos", que es metainformación de nivel superior acerca de la variable entre el tipo de máquina, en un OO o lenguaje funcional moderno, puede crear tipos definidos por el usuario, por lo que no hay distinción entre tipo y "kind" en este sentido, ambos pueden ser representados por el sistema de tipos y "apps" el húngaro es tan redundante como los "sistemas" húngaros.
Entonces, para responder a su pregunta: los sistemas húngaros solo serían útiles en un lenguaje inseguro y de tipo débil donde, por ejemplo, asignar un valor flotante a una variable int bloqueará el sistema. La notación húngara se inventó específicamente en los años sesenta para su uso en BCPL , un lenguaje de nivel bastante bajo que no hacía ninguna verificación de tipo. No creo que ningún lenguaje de uso general hoy tenga este problema, pero la notación vivió como una especie de programación de culto de carga .
Las aplicaciones húngaras tendrán sentido si está trabajando con un idioma sin tipos definidos por el usuario, como VBScript heredado o versiones anteriores de VB. Quizás también las primeras versiones de Perl y PHP. Nuevamente, usarlo en un idioma moderno es puro culto de carga.
En cualquier otro idioma, el húngaro es feo, redundante y frágil. Repite información ya conocida del sistema de tipos, y no debe repetirse usted mismo . Use un nombre descriptivo para la variable que describe la intención de esta instancia específica del tipo. Utilice el sistema de tipos para codificar invariantes y metainformación sobre "tipos" o "clases" de variables, es decir. tipos.
El punto general del artículo de Joels - hacer que el código incorrecto se vea mal - es un muy buen principio. Sin embargo, una protección aún mejor contra errores es, cuando sea posible, tener un código incorrecto para que el compilador lo detecte automáticamente.