¿Qué es la notación húngara y debería utilizarla?

Una cita famosa en los círculos de programación es la siguiente:

Solo hay dos cosas difíciles en Ciencias de la Computación: invalidación de caché y nombrar cosas.

La notación húngara es un sistema que intenta facilitar un poco los nombres de las cosas. Puede encontrar la notación húngara al explorar una base de código existente. Es posible que tenga un colega que esté particularmente interesado en usarlo. Pero, ¿qué es y cómo se ve? ¿Y realmente deberías usarlo?

¿Qué es la notación húngara?

La notación húngara es una convención sobre la denominación de identificadores. Se aplica principalmente a la denominación de variables, pero también puede cubrir la denominación de funciones. La notación es un intento de formalizar cómo el nombre de una variable puede indicar su tipo o propósito.

Usando la notación húngara, los nombres de las variables comienzan con un grupo de letras con un significado acordado. Estas letras suelen ser una abreviatura del tipo de variable. Por ejemplo, la letra l podría representar un número entero largo. La abreviatura str representa una cadena.

¿Es realmente húngaro?

Sí, ¡la notación húngara fue, de hecho, inventada por un húngaro! Charles Simonyi era un empleado de Microsoft cuando inventó el término. Era programador en la empresa y trabajaba en software de aplicación.

A diferencia de la mayoría de los demás idiomas occidentales, los nombres húngaros ordenan primero el apellido, seguido del nombre de pila. El término notación húngara puede hacer referencia a este hecho, o puede ser simplemente una feliz coincidencia. Podría haber sido más natural para Simonyi debido a su lengua materna.

¿Cómo se ve?

En lugar de nombrar una variable simplemente edad , la notación húngara incluye un prefijo que representa el tipo de esa variable. Por ejemplo, en C, un programador podría declarar dicha variable de la siguiente manera:

 int iAge;

Tenga en cuenta que, debido a que C es un lenguaje fuertemente tipado, el prefijo i es redundante en el punto de declaración. Sin embargo, cuando se usa la variable más adelante, el prefijo resulta útil:

 printf("I am %d years old", iAge);

El prefijo ayuda a recordarnos que estamos usando el tipo correcto de variable.

En un lenguaje de tipado débil, como PHP, las variables pueden adoptar diferentes tipos según el valor que tengan. Entonces, la notación húngara es potencialmente más útil:

 $iAge = 21;

Aquí hay algunos ejemplos más de un esquema común de notación húngara:

Prefijo Tipo Ejemplo
B booleano bLightsEnabled
C personaje cLetterGrade
str cuerda strCategory
I entero iWheels
F flotador fMiles
C clase CPpersona
{nombre de la clase} objeto personLeader

Sistemas húngaro versus aplicaciones húngaro

La notación húngara tiene una división. En una esquina, tenemos Systems Hungarian, en la otra, Apps Hungarian. La diferencia es sutil pero de suma importancia.

Systems Hungarian es la versión que la gente suele asociar con la notación húngara. Se trata estrictamente del tipo de variable, como hemos mostrado anteriormente.

Apps Hungarian intenta codificar el propósito de una variable en lugar de su tipo de datos. Este es un concepto mucho más amplio, por lo que los ejemplos pueden cubrir muchos 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 la forma original de notación húngara, y la intención de Simonyi era describir el propósito. Systems Hungarian es una especie de mutación, una que muchos argumentan que es para peor.

¿Qué tiene de bueno la notación húngara?

Como mencionamos anteriormente, Systems Hungarian puede ser útil para lenguajes de tipo débil. Permite que alguien que esté mirando el código determine instantáneamente el tipo de variable, siempre que aparezca.

La notación húngara también ayuda a imponer nombres de variables coherentes. Después de todo, la mala denominación de variables es uno de los errores de programación más comunes . La notación de aplicaciones puede ayudar a los programadores a detectar errores importantes sobre los que el lenguaje no los alertaría.

¿Y qué tiene de malo la notación húngara?

En general, la notación húngara ha pasado de moda. En los lenguajes fuertemente tipados, es ampliamente redundante, especialmente el tipo de sistema húngaro. También puede hacer que el código sea más difícil de leer. Cualquier problema que pueda ayudar a resolver suele ser signo de fallas más profundas, como una dependencia excesiva de las variables globales .

Apps Notation parece tener más a su favor, pero incluso esta versión tiene sus detractores. Existe un buen argumento de que la información sobre el propósito debe seguir siendo parte del tipo de variable.

Cualquier lenguaje que admita clases o tipos definidos por el usuario normalmente puede lograr los mismos objetivos de una mejor manera. Nombrar una variable usName no la hará más segura. Pero la creación de una clase llamada UnsafeString permite que un compilador verifique el tipo de una variable.

¿Debería usar la notación húngara?

En última instancia, esa elección depende de usted. Si está trabajando en un equipo más grande, probablemente alguien tomará la decisión y todos deberían estar de acuerdo. Si está escribiendo su propio código, puede decidir basándose en los argumentos anteriores.

Pero es posible que desee seguir los últimos consejos de Microsoft, la empresa donde se originó la notación húngara. Desde 2008, sus convenciones generales de nomenclatura han incluido esta sencilla nota:

❌ NO use notación húngara.