.NET Generics

Hace muchos años solía trabajar en una empresa de consultoría y desarrollo a la medida [PAD]. Dentro de ella, uno de mis compañeros de trabajo [más bien, mi ex-jefe] solía desarrollar algo que llamaba «funciones genericas». ¿A qué se refería con esto? A que una misma función podía hacer el trabajo de muchas … sin necesidad de tener que reprogramar cosas [claro que al final acababa teniendo la función más grande y revuelta del mundo, pero eso es otra historia].

Entonces imaginense esta función:

public function SalvarCatalogo(id as integer, nombre as integer, tipo as integer) as boolean

Y lo que hace esta función es salvar un registro en cualquiera de los catálogos dependiendo del tipo. Lo que nos llevaba a algo así:

if Tipo = 1 then
‘ Insert into Empleados

elseif Tipo = 2 then
‘ Insert into Clientes

elseif Tipo = 3 then
‘ Insert into Clientes

Y así proseguiamos a insertar en miles y miles de catálogos. Obviamente el mantenimiento de la aplicación se convirtió en una pesadilla, ya que cuando un catálogo se le agregaba un campo, se tenía que agregar un parámetro adicional a la lista de argumentos de la función… y bueno… para que continúo…

En la nueva versión de .NET se mete un nuevo concepto que se llama Generics. Básicamente es algo que nos referimos a una clase, pero que no está ligada con ningún tipo en específico, pero de todos modos permite hacer operaciones de una manera segura basado en tipos. Un ejemplo perfecto es donde tenemos que crear una colección de elementos, creamos una colección que pueda cargar cualquier tipo generico y podemos usar los elementos que están dentro de el sin necesidar de usar Box/UnBox.

En el ejemplo actual, usamos una colección de objetos; digamos en un ArrayList y cuando necesitamos obtener información de un objeto dado dentro de la colección, tenemos que usar un Cast [UnBox] para poder obtenerlo. Básicamente es algo así…

Encontré unos vínculos muy interesantes que les pueden servir de referencia adicional sobre este tema, así que para que podamos aprender lo que nos depara el futuro con Generics y todo lo que viene alrededor de esto, lo podemos revisar en:

http://www.15seconds.com/issue/031024.htm
http://research.microsoft.com/projects/clrgen/
http://www.developer.com/net/cplus/article.php/3367531
http://www.ondotnet.com/pub/a/dotnet/2004/05/25/whidbey_vbnet_pt2.html
http://www.lambda-computing.com/publications/articles/generics/

Espero que sea de ayuda.

Cheers! xD


Comentarios

Deja una respuesta