Notación Húngara
La notación húngara fue ideada por Charles Simonyi, aunque fue muy popular en el siglo pasado y ha entrado en desuso aún hay personas que continuan aplicandola. Basicamente consiste en incluir el tipo de dato de una variable en su nombre de la siguiente forma:
sNombre // esta variable es un string que contiene el nombre
iEdad // esta variable es un integer que contiene la edad
A este tipo de notacion se la conoce como Notacion Hungara de Sistema, ya que lo que nos revela el nombre son detalles del tipo de datos que se esta usando en el compilador para representar el dato. Otro tipo de notacion Hungara, denominado “de Aplicacion” nos da un poco mas de informacion semantica acerca de la variable que solo el tipo de datos fisico que se usa, por ejemplo:
usNombre // un "unsafe string" con el nombre, unsafe pq quiza el string se cargo usando un formulario web y hay que validar que el nombre no tenga cosas raras que den lugar a ataques via XSS o SQLInjection.
Esta tecnica entro en desuso por varias razones pero es muy frecuente encontrarla en tablas de bases de datos donde se mete el tipo de dato de una columna en su nombre, asi que nos encontramos con nombres del tipo varchar_nombre, integer_edad, timestamp_fecha, etc.
Personalmente me desagrada mucho la Notacion Hungara por los motivos que enumero a continuación:
- En un lenguaje fuertemente tipado no aporta informacion que el compilador no nos brinde de antemano. Es discutible para la notacion hungara de aplicaction.
- Es más frecuente olvidarse para que sirve una variable que su tipo de datos.
- Es probable que tengamos que escribir más veces el nombre de una variable que las veces que no recordemos su tipo de dato.
- En los lenguajes dinamicos, y tambien tipados porque no, un vistazo en el test unitario nos da una pauta de que tipo de dato estamos manejando y las intenciones de las variables.
- Acerca mucho el código a la implementación y al mismo tiempo lo aleja del dominio del problema.
- Si desconocemos el proposito de una variable, poco nos va a ayudar conocer el tipo de dato.