martes, 11 de noviembre de 2008

Mi Humilde Opinión Sobre C# 4.0

En las ultimas semanas eh visto como muchos desarrolladores andan muy emocionados con las nuevas características del lenguaje tan amado “C#”, y no voy a decir que no me emocionan… pero mas que emocionarme me asusta que están haciendo con C#, Ya voy a explicar porque.

Tipos dinámicos

Se agrego una palabra clave: “dynamic” con la cual podemos crear objetos dinámicos en tiempo de ejecución. Un ejemplo seria.

dynamic d = GetDynamicObject(…);
d.M(7);

al marcar de esta manera al objeto “d” estamos diciéndole al compilador que no verifique si “d” tiene un método llamado “M” que recibe un entero.

Eh Aquí Mi preocupación: -P: ¿entonces que pasa cuando “d” no tiene el método “M”?   -R: ¡Obtenemos una Exception en tiempo de ejecución!,

Recuerdo que en lanzamiento de C# 2.0, hacían enfoque en los problemas con el casting en las Colecciones y nos trajeron los maravillosos Tipos Genéricos y con ellos muchas soluciones a errores en tiempo de ejecución, ¿y porque ahora recurrimos a tipos dinámicos que nos generan de nuevo problemas en tiempo de ejecución?.

Parámetros Opcionales

Esta nueva característica del lenguaje nos permite definir parámetros opcionales para los métodos. Un Ejemplo Seria.

int Suma(int x = 0, int y = 0, int z = 0)
{  
            return x + y + z;
}

con lo que podíamos llamar al método de estas siguientes formas.

int a = Suma();        // a = 0
int b = Suma(2);       // b = 2
int c = Suma(2, 3);    // c = 5
int d = Suma(2, 3, 4); // d = 9

Mi preocupación sobre este Punto se basa en la manera de como se trabaja actualmente con el polimorfismo y la sobre carga de métodos, se entiende que con esta nueva forma de hacer polimorfismo escribimos menos código, pero ¿hay necesidad de cambiar nuestros paradigmas de codificación?, ¿como afecta esto a nuestras arquitecturas?, son cosas que tendremos que esperar, además que me recuerda al feo VB 6.0.

Parámetros Nombrados

Esta nueva característica del lenguaje nos permite pasar los nombres de los parámetros con sus valores respectivos, Un Ejemplo Seria.

int Suma(int x = 0, int y = 0, int z = 0)
{  
    return x + y + z;
}

Con lo que podríamos hacer algo como esto.

int e = Suma(x:5, z:7);  // e = 12

Esta nueva característica es muy agradable aunque no dejo de pensar en esos desarrolladores que no piensan en la legibilidad del código.

Mi Humilde Opinión

Es Bueno que un lenguaje evolucioné y que valla al ritmo del mercado y al parecer el mercado va por el lado de los lenguajes dinámicos, ya que se podría decir que varias de estas características nuevas vienen de lenguajes como PHP, Python, Delphi y hasta del mismo VB.net, no soy quien para aportar en el equipo de desarrollo de C# pero si puedo dejar mi humilde opinión!

Algunos Links De Interés

No hay comentarios: