O que é notação húngara e devo usá-la?
Uma frase famosa nos círculos de programação é a seguinte:
Existem apenas duas coisas difíceis na Ciência da Computação: invalidação de cache e nomes de coisas.
Notação húngara é um sistema que tenta tornar a nomenclatura um pouco mais fácil. Você pode encontrar notação húngara ao explorar uma base de código existente. Você pode ter um colega que está particularmente interessado em usá-lo. Mas o que é e como se parece? E você realmente deveria estar usando?
O que é notação húngara?
A notação húngara é uma convenção de nomenclatura de identificadores. É aplicado principalmente à nomenclatura de variáveis, mas também pode abranger a nomenclatura de funções. A notação é uma tentativa de formalizar como o nome de uma variável pode indicar seu tipo ou propósito.
Usando a notação húngara, todos os nomes de variáveis começam com um grupo de letras com um significado acordado. Essas letras são normalmente uma abreviatura para o tipo de variável. Por exemplo, a letra l pode representar um inteiro longo. A abreviatura str representa uma string.
É realmente húngaro?
Sim, a notação húngara foi, de fato, inventada por um húngaro! Charles Simonyi era um funcionário da Microsoft quando inventou o termo. Ele era um programador na empresa, trabalhando com software aplicativo.
Em contraste com a maioria das outras línguas ocidentais, os nomes húngaros ordenam o nome de família primeiro, seguido pelo nome dado. O termo notação húngara pode fazer referência a esse fato, ou pode ser apenas uma feliz coincidência. Poderia ter sido mais natural para Simonyi por causa de sua língua nativa.
Com o que se parece?
Em vez de nomear uma variável simplesmente como idade , a Notação Húngara inclui um prefixo que representa o tipo dessa variável. Por exemplo, em C, um programador pode declarar essa variável da seguinte maneira:
int iAge;
Observe que, como C é uma linguagem fortemente tipada, o prefixo i é redundante no ponto de declaração. No entanto, ao usar a variável posteriormente, o prefixo se mostra útil:
printf("I am %d years old", iAge);
O prefixo ajuda a nos lembrar que estamos usando o tipo correto de variável.
Em uma linguagem fracamente digitada, como o PHP, as variáveis podem adotar diferentes tipos de acordo com o valor que possuem. Portanto, a notação húngara é potencialmente mais útil:
$iAge = 21;
Aqui estão mais alguns exemplos de um esquema comum de notação húngara:
Prefixo | Tipo | Exemplo |
---|---|---|
b | boleano | bLightsEnabled |
c | personagem | cLetterGrade |
str | fragmento | strCategory |
eu | inteiro | iWheels |
f | flutuador | fMiles |
C | classe | CPerson |
{nome da classe} | objeto | personLeader |
Sistemas húngaro versus aplicativos húngaro
A notação húngara tem uma divisão. Em um canto, temos Sistemas húngaros, no outro, Apps húngaros. A diferença é sutil, mas muito importante.
Sistemas em húngaro é a versão que as pessoas costumam associar à notação húngara. Ele lida estritamente com o tipo da variável, como mostramos acima.
O Apps húngaro tenta codificar a finalidade de uma variável em vez de seu tipo de dados. Este é um conceito muito mais amplo, portanto, os exemplos podem abranger muitos casos de uso diferentes:
// an Unsafe String eg a name the user entered in a web form
$usName
// the Length of the vertical side
$lVertical
// a Count of references to an object
$cRefs
Apps húngaro era a forma original da notação húngara, e descrever o propósito era a intenção de Simonyi. O sistema húngaro é uma espécie de mutação, que muitos argumentam que é para pior.
O que há de bom na notação húngara?
Como mencionamos anteriormente, Sistemas húngaro pode ser útil para idiomas de digitação fraca. Ele permite que alguém olhando o código determine instantaneamente o tipo de uma variável, sempre que ela aparece.
A notação húngara também ajuda a impor uma nomenclatura de variável consistente. Afinal, a nomenclatura incorreta de variáveis é um dos erros de programação mais comuns . O Apps Notation pode ajudar os programadores a identificar erros importantes para os quais a linguagem não os alertaria.
E o que há de ruim na notação húngara?
Em geral, a notação húngara saiu de moda. Em linguagens fortemente tipadas, é amplamente redundante, especialmente o tipo Húngaro de Sistemas. Também pode tornar o código mais difícil de ler. Quaisquer problemas que ele possa ajudar a resolver geralmente são sinais de falhas mais profundas, como uma dependência excessiva de variáveis globais .
O Apps Notation parece ter mais vantagens, mas mesmo esta versão tem seus detratores. Há um bom argumento de que as informações sobre o propósito ainda devem fazer parte do tipo da variável.
Qualquer linguagem que ofereça suporte a tipos ou classes definidos pelo usuário geralmente pode atingir os mesmos objetivos de maneiras melhores. Nomear uma variável usName não a tornará mais segura. Mas criar uma classe chamada UnsafeString permite que um compilador verifique o tipo de uma variável.
Devo usar a notação húngara?
Em última análise, essa escolha é sua. Se você estiver trabalhando em uma equipe maior, provavelmente alguém tomará a decisão e todos deveriam concordar com ela. Se você está escrevendo seu próprio código, pode decidir com base nos argumentos acima.
Mas você pode querer seguir os últimos conselhos da Microsoft, a empresa que deu origem ao Hungarian Notation. Desde 2008, suas convenções gerais de nomenclatura incluem esta nota simples:
NÃO use a notação húngara.