Written by: on 17/03/2008 @ 10:48

Dado que llevo un tiempo sin escribir, la mejor forma que me ha parecido de retomar la marcha es recordando (en mi opinion) al padre de la notacion en la programacion. Este caballero de origen hungaro, ha estado trabajando durante muchos años en proyectos de Microsoft de los menos conocidos, Word, Excel, … no se si os sonaran 😉

Charles Simonyi

Y no vamos a hablar sobre su proximo viaje espacial, si no sobre la  «Notacion Hungara», obviamente en la epoca que se planteo esta nomemclatura se basaba en usar unos prefijos antes de cada variable:

Prefijo Significado

a de ‘array’. Para vectores/matrices/listas de n dimensiones ordenados escalarmente.
b de ‘booleano’. Para variables que tomen sólo dos tipos de valores.
c de ‘char’. Para el tipo primitivo de carácter alfanumérico individual.
d de ‘double’. Para tipos numéricos de alta precisión, como double o float.
e de ‘event’. Para eventos.
f de ‘función’. Sólo la utilizaremos delante de funciones
cuando se traten de funciones que se añadan como observadores de un
evento (ya que usar esta notación para cualquier método o función sería
bastante engorroso).
g de ‘delegated’. Para tipos delegados.
h de ‘hashtable’. Colecciones ordenables mediante clave hash (hUsuarios[“juan23”]).
i de ‘int’. Para números enteros en general, tanto enteros normales como aquellos tipos enteros de más capacidad (como long).
l de ‘lock’. Para objetos de control que nos faciliten el uso de exclusiones mutuas, candados y semáforos.
n de ‘enum’. Para tipos enumerados.
o de ‘objeto’. Para objetos en general (no se debe usar la
notación húngara para distinguir entre tipos de objetos, salvo escasas
excepciones).
p de ‘puntero’. Para lenguajes con aritmética de punteros.
s de ‘string’. Para variables de tipo cadena de texto, ya
sean nativos o arrays de chars. Este tipo de datos es muy habitual en
lenguajes sin lógica de punteros. Si se usara el objeto de tipo
“String” en estos casos, acudiremos a este identificador en lugar de al
‘o’ de objeto.
t de ‘struct’. Similar al ‘o’ de objetos, éste se usaría
para variables de tipo struct en general (es decir, objetos de tipo
primitivo).
v de ‘variable’. Para variables que adquieran diferentes
tipos de valores. Normalmente sólo acudiremos a esta opción en
lenguajes no tipados (como JavaScript/EcmaScript).
La usaremos cuando no estemos seguros del tipo de valor que albergará
una variable. También puede valer para objetos que tengan un tipo
genérico T.
y de ‘byte’.

 

El detalle es que la programacion avanza, y al crearse nuevos objetos, tipos, … nos encontramos con nuevas posibilidades, y lo peor, que la tecnologia nos permite (en mi opinion) la aberracion de llamar a proyectos que generan dll de la forma «La_Libreria v1.0.dll» vale, muy bien, aplaudo la posibilidad de estas opciones, pero cuando eres desarollador el echo de tenerque picar Shift +  guion , el punto, los espacios, …. seamos realistas ES UN INCORDIO !! , y mas, si queremos usar la gran capacidad de cambio de plataforma del .NET hemos de recordar que no todos los sistemas operativos interpretan igual los nombres, sin ir mas lejos la diferenciacion de Mayusculas y Minisculas.

La solucion de este tipo de inconvenientes es obvio, evolucionar la notacion hungara y readaptarla a nuestras nuevas clases. Si queremos simular un espacio se hace cambio de minusculas a mayusculas ( asiDefinimosEspacios ), simpre empezar a escribir con minusculas, cada objeto lo definiremos con dos o tres letras delante. Por ejemplo:

  • txtCuadrado: para los TexBox.
  • cmbCombo: para los ComboBox.
  • rbOpcion:  para los RadioButton.
  • chkOpcion: para los CheckBox.
  • …..

 

De esta forma el leer codigo de otras personas, junto con los comentarios, nos sera muuucho mas sencillo, hasta el punto en el que solo sepamos diferenciar quien lo has escrito por el nombre de autor que ponga en el comentario y la complejidad de sus algoritmos.

 

Catogories: .NET, Nomenclatura

Leave a Reply