Thursday, May 29, 2008

Notacion Hungara

Desde que estoy programando, me he topado con diferentes estilos a la hora de darle nombre a los elementos de un programa.

El clasico "con una letra sobra" que se empleaba al poner nombres a las variables en basic, cuando programaba con mi C64.

La Camel Case que tanto me gusto que usaba en Java y C++.

Luego llego Vb6 y .Net. Lo primero que me choco fue el que los nombres de los metodos empezasen con mayusculas, como las clases. Pero, la verdad, eso era lo de menos.

Y fue en esos codigos legacy de "Visual Basic" cuando descubri a la grandiosa notación hungara. La idea es anteponer al nombre de la variable informacion sobre su tipo. Si es un miembro de una clase ponemos una m, un parametro de un procedimiento una a, si es un entero una i, un entero sin signo una ui... de esta forma potenciamos la expresividad de la variable por ejemplo:

private int migota; // contador de gotas que han caido en el vaso

Pero esta notación, casi perfecta, puede ser mejorada para albergar aun mas información, hacerla una notación dignos de machos. Asi es como he decidido emplear en mis proyectos la notación hungaro romana. Consiste, en caso de variables numericas, ademas de informar sobre su tipo, informar tambien sobre su rango. Y dado que los desgraciados que inventaron la semantica de los lenguajes no nos dejan emplear numeros en el comienzo de nuestros identificadores, emplearemos para ello numeros romanos.

En el ejemplo anterior, si en un vaso caben entre 0 y setecientas cuarenta y ocho mil ciento doce gotas, la variable quedaria como sigue (ojo al "hack" para solventar la ausencia de numero cero en romano):

private int zeratum_MMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMCXII_migota;

Con esta notación no solo aumentamos considerablemente la legibilidad de nuestor codigo si no además es altamente portable a otros marcos temporales como el medievo o la epoca dorada del imperio romano.

Espero que todos empeceis a emplear tan potente nomenclatura, o por lo menos la notacion hungara.

Solo para terminar:

Me cago en la notacion hungara y la madre que la pario.