O que é notação húngara e devo usá-la? - TecnoGuia

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.