A notação húngara só faz sentido em idiomas sem tipos definidos pelo usuário . Em uma linguagem funcional ou OO moderna, você codificaria informações sobre o "tipo" de valor no tipo de dados ou classe, e não no nome da variável.
Várias respostas fazem referência ao artigo de Joels . Observe, no entanto, que seu exemplo está no VBScript, que não suportava classes definidas pelo usuário (por um longo tempo, pelo menos). Em um idioma com tipos definidos pelo usuário, você resolveria o mesmo problema criando um tipo HtmlEncodedString e, em seguida, deixe o método Write aceitar apenas isso. Em uma linguagem digitada estaticamente, o compilador captura qualquer erro de codificação; em uma digitação dinâmica, você recebe uma exceção de tempo de execução - mas, em qualquer caso, você está protegido contra a gravação de strings não codificadas. As notações húngaras transformam o programador em um verificador de tipos humano, com o tipo de trabalho que normalmente é melhor tratado pelo software.
Joel distingue entre "sistemas húngaro" e "aplicativos húngaro", onde "sistemas húngaro" codifica os tipos internos como int, float e assim por diante, e "aplicativos húngaro" codifica "tipos", que é uma meta-informação de nível superior sobre a variável além do tipo de máquina. Em uma linguagem funcional OO ou moderna, é possível criar tipos definidos pelo usuário, para que não haja distinção entre tipo e "tipo" nesse sentido - ambos podem ser representados pelo sistema de tipos - e "apps" húngaro é tão redundante quanto "sistemas" húngaro.
Então, para responder à sua pergunta: Os sistemas húngaros seriam úteis apenas em uma linguagem insegura e de tipo fraco, onde, por exemplo, atribuir um valor flutuante a uma variável int causará um travamento no sistema. A notação húngara foi inventada especificamente nos anos sessenta para uso no BCPL , uma linguagem de baixo nível que não fazia nenhuma verificação de tipo. Não acho que nenhuma linguagem de uso geral hoje tenha esse problema, mas a notação vivia como uma espécie de programação de cultos de carga .
Os aplicativos húngaros farão sentido se você estiver trabalhando com uma linguagem sem tipos definidos pelo usuário, como VBScript herdado ou versões anteriores do VB. Talvez também versões anteriores do Perl e PHP. Novamente, usá-lo em uma linguagem moderna é puro culto à carga.
Em qualquer outro idioma, o húngaro é apenas feio, redundante e frágil. Ele repete as informações já conhecidas do sistema de tipos e você não deve se repetir . Use um nome descritivo para a variável que descreve a intenção dessa instância específica do tipo. Use o sistema de tipos para codificar invariantes e meta-informações sobre "tipos" ou "classes" de variáveis - ie. tipos.
O ponto geral do artigo de Joels - fazer com que um código errado pareça errado - é um princípio muito bom. No entanto, uma proteção ainda melhor contra bugs é - quando possível - ter código incorreto a ser detectado automaticamente pelo compilador.