Se introdujeron varias características en C# 3.0, lo que me inquietó, como los inicializadores de objetos, los métodos de extensión y las variables implícitamente tipadas. Ahora en C# 4.0 con cosas como la palabra clave dinámica me estoy preocupando aún más.¿Cómo manejas las nuevas características de C# para que no lleven a un código mal escrito?
sé que cada una de estas características CAN usarse de manera apropiada PERO en mi opinión, que hacen más fácil para los desarrolladores para hacer malas decisiones de codificación y, por tanto, escribir código peor. Me parece que Microsoft está tratando de ganar cuota de mercado haciendo que la codificación sea fácil y poco exigente. Personalmente, prefiero un lenguaje riguroso y exige más a mis estándares de codificación y me obliga a estructurar las cosas de manera POO.
Éstos son algunos ejemplos de mis preocupaciones por las características mencionadas anteriormente:
constructores de objetos pueden hacer importantes lógica que no está expuesta al consumidor. Esto está bajo el control del desarrollador de objetos. Los inicializadores de objetos quitan este control y permiten que el consumidor tome las decisiones sobre qué campos inicializar.
EDITAR: No había apreciado que puedes mezclar el constructor y el inicializador (mi mal) pero esto empieza a parecer desordenado para mi mente y todavía no estoy convencido de que sea un paso adelante.
Permitir que los desarrolladores amplíen los tipos incorporados utilizando métodos de extensión permite que todos comiencen a agregar sus métodos favoritos a la clase de cadena, que puede terminar con una desconcertante variedad de opciones o requiere más control de estándares de codificación eliminar estos.
Permitir variables tipeadas implícitamente permite una programación rápida y sucia en su lugar o enfoques de POO correctamente, que pueden convertirse rápidamente en un desastre inmanejable de vars en toda la aplicación.
¿Están mis preocupaciones justificadas?
RobW: debe volver a formular su pregunta. "es correcto Microsoft" es argumentativo, mientras que "¿Cómo lidiar con las nuevas características de C# para que no conduzcan a un código mal escrito" no es – Brann
OK, lo probaré! No estaba tratando de ser argumentativo, por lo que di ejemplos de mi punto de vista, estoy interesado en lo que piensan otros desarrolladores. –
También es una pregunta de "discusión" sin una respuesta definitiva (solo opiniones) y entonces la wiki de la comunidad sería apropiada. –