Curiosidade: Notação Húngara
Eu fiquei com vontade de escrever esse texto depois de ler este outro excelente artigo do Joel Spolsky. No final do texto ele faz uma análise detalhada da criação e dos motivos que deram origem ao que chamamos de notação húngara.
Se você trabalha ou trabalhou com alguma linguagem de programação pelo últimos 10 anos, provavelmente em algum momento da vida ouviu o termo Notação Húngara (provavelmente de alguma equipe querendo implantar regras de codificação), no Wikipedia o resumo é ótimo e eu destaco aqui:
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".
Fora o termo tipo de variável, todo o resto pode ser considerado correto nesse destaque – eu recomendo fortemente que você leia o material escrito por Joel Spolsky. Pensando nisso, fiz uma pequena adaptação no texto e um breve resumo que você lê abaixo..
Imagine-se no começo dos anos 90 trabalhando em um dos primeiros processadores de textos WYSIWYG do mundo, então percebe que o ponteiro de escrita de texto pode ter coordenadas relativas a página e a janela do programa, e decide então criar variáveis para cada uma das coordenadas. Lembre-se que você está no começo dos anos 90 e ainda não existem ferramentas ou IDEs como o Visual Studio com marcação e Intellisense, você então decide que para tratar coordenadas vai colocar o prefixo “c” no nome das variáveis, e cria as mesmas do seguinte modo:
int cPage; int cWindow;
Perceba que ambas as variáveis são inteiras e intercambiáveis entre si, ou seja, é possível atribuir uma a outra (cPage = cWindow ou cWindow = cPage) e o código vai compilar sem maiores problemas. Se você fizer isso provavelmente receberá de presente um erro de execução, porque não faz nenhum sentido atribuir uma a outra.
Você então percebe que talvez seja um boa ideia colocar o tipo de função que a variável representa como prefixo, e eu acredito que foi justamente nesse ponto que a coisa toda se complicou, percebam que não é o tipo de variável (no exemplo acima ambos são inteiras) mas sim o tipo de função (coordenada relativa a) que a variável vai armazenar.
Aconteceu de alguém ler o código e entender tudo errado, algum tempo depois o problema já estava criado e a própria Microsoft recomendava a utilização de Notação Húngara. Isso mudou com o avanço das IDEs de desenvolvimento e nesse momento a utilização não é mais recomendada, duvida? Veja aqui.
Se você quiser, também pode ler o whitepaper do Charles Simonyi, disponível aqui.
Opinião do Autor
Com as IDEs atuais de desenvolvimento, independente da linguagem utilizada, o uso de Notação Húngara ou qualquer outro padrão (que inclua a nomenclatura de variáveis para armazenar o tipo) não é mais necessária. Existem, porém, boas práticas de desenvolvimento que ainda são totalmente válidas.