debug_mode=ON

Buscar en

 
 

Mi Humilde Opinión Sobre C# 4.0

Escrito por calderonsteven hace 1 años bajo una licencia de Creative Commons Creative Commons License
1193 visitas. Etiquetas: c, net

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!

Tomado de mi blog: http://algodedesarrollo.blogspot.com

 

¡Votalo! 1 votos
¡Compártelo!

        

&nbps;

&nbps;

calderonsteven

Sobre calderonsteven

Este usuario no ha completado su perfil.

 
Regístrate o haz login para participar.
¿Todavía no conoces debugmodeon?
debugmodeon es la red social para profesionales de la informática
descubre debugmodeon
 

5 comentarios en "Mi Humilde Opinión Sobre C# 4.0"

Luix
Luix escribió
hace 1 años

#1   

Pues sí, estoy de acuerdo contigo en que algunas de esas características aportan dudosas ventajas, como poco. Al programador experimentado pueden facilitarle la vida, sí, cierto, pero como dices: ¿tan complicadas eran las cosas antes? Y por otro lado, siempre va en perjuicio de la legibilidad, sobre todo con el tema de Parámetros Opcionales. Yo los usé en PHP5 y la verdad es que aportan mucha potencia y versatilidad (sobre todo a la hora de sobrecargar métodos), pero tampoco son fundamentales.

Gracias por este resumen de características.

Y por cierto, muy bonito el diseño de tu blog XD.

 

Rafacas
Rafacas escribió
hace 1 años

#2   

"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?"

Recurrimos a tipos dinámicos no para utilizarlos en la programación "normal" y dejar de utilizar genéricos y tipeado estático, sino para tener referencias a tipos creados en Python, Ruby, JScript, etc., donde podrían o no existir los miembros de sus clases.

Al fin de cuentas una variable dynamic se implementa con el tipo System.Object con tratamiento especial por parte del compilador, y quererlas utilizar en todos los casos es como tipear todas las variables como object, sería un infierno. Es una nueva herramienta pero que tiene sus casos de uso muy específicos.

 

calderonsteven
calderonsteven escribió
hace 1 años

#3   

@Rafacas: ahora entiendo mas los tipos dinamicos, ademas leyendo http://code.msdn.microsoft.com/csharpfuture) entendi que tambien lo hacen para mejor manejo con objetos COM

 

vladdy
vladdy escribió
hace 1 años

#4   

En realidad todas estas "Nuevas características" ya están presentes en PHP desde hace mucho tiempo... y realmente creo que lo que le añade al lenguaje no es más que desordenar el lenguaje y desvirtuarlo.

 

jsanca
jsanca escribió
hace 1 años

#5   

Bueno yo no toco C# desde hace unos 4 años, soy mas que todo Javalero, pero voy a meter la cuchara.
El tema del dynamic (que de seguro ahorita sale en Java, jejeje), realmente cambia el paradigma, aunque sea opcional, al menos en Java sale algo nuevo, el equipo de Sun a parir chinos con sombrillas cambiando todo el Kit, para adaptarlo a lo nuevo y conservar compatibilidad hacia atras. En Java por ejemplo me gusta mas el hecho que se puedan integrar lenguajes con Groovy, que son dinámicos, con closures y sintaxis super reducida, pero al menos uno puede decidir en que parte del sistema se usa, por ejemplo para el acceso a datos y la lógica de negocias, utilizo Java, para la capa de vista y control Groovy, donde la codificación es algo más rápida, con este enfoque tu lenguaje fuerte permanece en el mismo paradigma y puede integrarse con otros, mas permisivos, en .Net al igual que en Java, se cuenta con IronPython y Ruby, para acceder a lenguajes mas permisivos.

En cuanto a los parámetros opcionales a mi si me gustan, de hecho me encantaría que estuvieran en Java, pues antes de Java y C#, fue programador de C++ por unos 4 años y esa sintaxis resulta super provechosa, al menos para mi.
También me encanta de .Net los delegados, que conservo una pseudo sobrecarga de operadores, medio copiada de C++, me encantaría que estuviera en Java también.
Otro tema importante es la herencia única, ambos lenguajes solo pueden extender de una clase e implementar N, en algunas situaciones extraño esa posibilidad de C++.

El ultimo punto, pues Perl funciona así, pero cualquier que haya programado en Perl, se puede dar cuenta del arroz con mango que se puede hacer con ese tipo de sintaxis, pero lo mismo que antes, hay gente ordenada que escribe código entendible en Perl, fijo en cualquier otro lenguaje también se puede hacer.

Ojala que C# siga siendo el lenguaje elegante de siempre, realmente me gusto trabajar en el, hoy por hoy creo que es el mejor lenguaje tipado con el que trabajado.

 
 
 
 

© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |