Notação húngara
# Notação húngara

A Notação húngara, criada por Charles Simonyi, visa a facilitar o reconhecimento do tipo de variável num programa. O nome foi dado a partir de uma brincadeira comum entre os primeiros a conhecer a notação que a achavam estranha, fazendo o seguinte comentário: "É tão estranho que até parece húngaro".
Quando se confronta com a necessidade de dar um novo nome a uma variável num programa, o programador deve tomar alguns cuidados ao tomar essa decisão:
* Nome mnemônico - é aquele que facilita a lembrança do significado pelo programador;
* Nome sugestivo - é aquele em que outros podem ler o código;
* Formato - é sempre visto como uma idéia estética, tendo sempre uma informação eficiente do programa teste;
* Velocidade de decisão - não se pode perder muito tempo para ponderar um simples nome, pois não haverá tempo para editar e digitar nomes de variáveis longos.
A adoção deste critério de nomeação é bastante prática e intuitiva, sendo a idéia básica nomear todos os tipos de quantidades, visando-se a simplificar o entendimento do programa. Algumas vantagens deste método:
* Os nomes em mnemônicos são utilizados num senso muito específico. Se alguém se lembrar da quantidade ou como os nomes foram construídos através de outros tipos, o nome poderá ser lido facilmente.
* Os nomes sugestivos são muito bons. É capaz de se mapear qualquer nome dentro do seu tipo, tendo as informações necessárias para construir sua interface e utilizar de maneira correta sua quantidade.
* Os nomes devem ser consistentes, porque eles são construídos pelas mesmas regras.
* A decisão por um nome deve ser mecânica e rápida.
* As expressões nos programas devem ser sugestivas, facilitando a leitura e acompanhamento do programa.
Com o objetivo de fazer listas intuitivas de se ler, os programas baseados na plataforma Windows utilizam a Notação húngara para gerar estas listas.
As regras para se utilizar a Notação húngara são:
* Os tipos definidos e/ou criados devem aparecer em letras maiúsculas;
* constantes e "Macros" que vêm definidas em arquivos inclusos aparecem também em letras maiúsculas;
* Funções e nomes estruturados começam com letras maiúsculas. Nenhuma marca abaixo são utilizadas para nomes, exceto para os casos que se encontrem nas duas regras anteriores;
* Nomes de objetos começam com uma ou mais letras maiúsculas, indicando o tipo do objeto.
A tabela abaixo indica os tipos de indicadores mais utilizados na Notação húngara:
| Nome | Descrição |
| s | String |
| sz | Aponta o primeiro caracter da terminação zero da string |
| st | Ponteiro da string, o primeiro byte é contado dos caracteres |
| h | handle (título) |
| msg | Message |
| fn | function (usada com pointer) |
| c | char (8 bits) |
| by | unsigned char (byte or uchar - 8 bits) |
| n | Int |
| b | Boolean (verdadeiro ou falso) |
| f | Flag (boolean, logical). Se qualificado é usado, pode descrever o estado verdadeiro do flag. Exceção às constantes. |
| u | integer |
| w | Word |
| ch | Char, com texto ASCII |
| l | long int (32 bits) |
| dw | unsigned long int (dword - 32 bits) |