Extension Methods enriquecidos con Generic Methods

Un par de cosas que hoy en día me hacen feliz de estar en este momento de la historia de la tecnología de desarrollo.

Recuerdo mis comienzos de programación con C++; aprendía a programar estructuras y bases de datos… hacía mi propio motor. Trasnocho incesante; la entrega del proyecto estaba encima… mucha repetición de código solo para cambiar tipos; cantidad de métodos estáticos y archivos de Utilidades para “reusar”. Lo pongo entre comillas, porque cada vez que necesitaba trabajar con nuevos tipos, tenía que copiar y pegar la funcionalidad… sí… traté de trabajar con templates, pero no eran del todo estándar; además el manejo de memoria… todo un pain. Además cuando quería utilidades sobre un tipo de datos dado, tenía que crear una biblioteca de métodos estáticos que recibían como parámetro a instancias de eso tipos, en vez de poder “extender” las funcionalidades de esos tipos de una manera sencilla que no me implecara tener que heredar (si es que se podía). Precisamente de la solución a esas incomodidades, les hablaré en esta ocasión.

.NET no es dos clicks y la aplicación está lista. Mejor dicho; no es solo eso.

La velocidad y productividad de desarrollo no solo es a nivel de Wizards o Asistentes, es algo más de fondo; la misma filosofía del framework nos permite tener características tan poderosas como las que les mostraré en el siguiente video: Métodos Genéricos y Métodos de Extensión.

Observaremos cómo los métodos de extensión nos permiten precisamente extender la funcionalidad de tipos ya definidos sean nativos o creados por algún desarrollador, sin necesidad de crear jerarquías de herencia o tipos anidados. Alguna vez quiso un método para convertir la inicial de una palabra a mayúscula, bien, con los métodos extendidos podrá lograr algo como:

 var nombre="pedro";
var nombreInicialMayuscula=nombre.CapitalizeFirstLetter();

// nombreInicialMayuscula="Pedro";

Por si fuera poco, observaremos como mezclar estas capacidades con métodos genéricos para lograr una flexibilidad total.

Separe media hora de su tiempo y observe además algunos otros tips mientras desarrollamos el ejemplo que nos ayudará un poco a mejorar la fineza del código que escribimos: