domingo, 10 de junio de 2007

/notación húngara o no?


En uno de los grupos que estoy suscrita se discutió las ventajas y desventajas de la notación húngara como estilo de codificación.
Someramente:
las variables vienen precedidas por dos letras, la primera letra indica el alcance de la variable y la segunda letra el tipo de variable que es.. los alcances pueden ser global, local, privada, parámetro.
Este estilo fue creado por Microsoft en otras 'eras', ya que actualmente tanto .NET y Java proponen CamelCase (UpperCamelCase para métodos y variables de clase y lowerCamelCase para tipos y métodos de instancias de clases).

En lo personal en los lenguajes que siguen el paradigma de la programación orientada a objetos, y que a mi me gustan, no le veo demasiado sentido, porque los considero antagónico con ese paradigma.
Prefiero pensar a las variables en función de su semántica y no se su tipo, y a su semántica le asocio un objeto.
Por otra parte hoy los lenguajes son fuertemente tipeados, lo que haría innecesaria esta práctica, salvo que la usemos como una especie de "comentario".
Como por ejemplo en lenguajes como JavaScript y Perl donde los tipos de variable se desconocen puede ser de ayuda.
Y aun en C++ el cual es un híbrido, podría haber excepciones, por ejemplo: nlineas: número de líneas.
Pero aun en C++ donde ciertas variables pueden tener un tipo decantado por su naturaleza específica e inamovible, prefiero pensarlo como un data Type.

Prefiero encapsular su naturaleza y uso mediante operaciones que me permitan manipular el tipo (usualmente los gets y los sets).
Esto trae la ventaja que si mañana un identificador deja de ser un int para ser un booleano, a mi no me interese, mi objeto se encargará de ello.

No obstante no soy un talibán de los estilos de codificación, creo que lo mas importante es que sea cual sea el elegido, debe estar bien documentado, en definitiva lo que perseguimos es claridad que nos facilite su entendimiento.
Y que por supuesto, ese estilo sea congruente con el lenguaje utilizado y el proyecto en cuestión.











No hay comentarios.: