C# 2021: mucha magia y grandes riesgos

Cuanto más veo las nuevas características que están introduciendo C# más «miedito voy sintiendo». Veo algunas características que se anuncian con un espíritu de «mucha funcionalidad con muy poco código«. Un ejemplo de esto es el tweet de ayer de David Fowler.

Cuando veo este tipo de anuncios no puedo evitar recordar los primeros años de .Net cuando ASP.NET WebForms generaba también ilusiones de simplicidad y productividad. En cierto modo la promesa sonaba como «podes hacer aplicaciones web como si fueran aplicaciones desktop y sin tener que aprender de tecnologías web«. Tiempo después descubrimos que el uso de WebForms tal como era promocionado (sin entender bien la web) tenía un conjunto de efectos colaterales que causaron estragos negativos en muchas aplicaciones y dolores de cabeza en muchos programadores.

Por otro lado, esta constante evolución de los lenguajes me resulta molesta y hasta inconveniente. En el caso de C# no bastaba con tener clases, enums, structs, interfaces, etc. que había que agregar records. Entiendo que la intención de gran parte de estos cambios es proveer mejores niveles de abstracción y simplificar el trabajo de programador. Si es así, estoy de acuerdo con la intención pero no comparto la estrategia. Yo personalmente me inclino más por la estrategia de Smalltalk, mantener el lenguaje al mínimo y agregar funcionalidades mediante el agregado de paquetes de clases.

Y ya que estamos, otra cuestión que no me gusta de .Net/C# es que el modelo de ejecución sync/async resulta extremadamente intrusivo, forzando a que las clases de dominio que contienen la lógica de negocio se vean «contaminadas» con elementos del modelo de ejecución (async, await, etc). Entiendo que esto es en favor de una mejor performance en mi opinión no vale la pena. Prefiero mantener el código más limpio y lidiar con el modelo de ejecución a nivel de infraestructura incluso cuando ello conlleve cierta penalidad de performance.

Es por todo esto que muchas veces mi código C# no hace uso de «las magias» recientes del lenguaje/plataforma y confío en que es mucho más claro que sí usara «esas magias».

En fin, C# como lenguaje me gustó mucho desde un comienzo así que solo espero que quienes trabajan en su evolución no lo choquen.

Un comentario en “C# 2021: mucha magia y grandes riesgos

  1. En parte estoy de acuerdo con vos, pero muchos de los cambios parecen bien orientados en el largo plazo.

    Por ejemplo Records: la idea es evitar la mutabilidad y simplificar el uso de buenas prácticas que vienen del ámbito de Functional Programming.

    Lo mismo con los tipos de referencia no nullables. No estoy seguro si lo están haciendo de la mejor manera, pero creo que es encomiable que intenten resolver el problema del billon de dolares en un lenguaje ya establecido.

    Creo que este artículo de hace 6 años, cuando aún algunos preferían usar foreach y List.Add() en lugar de Select puede servirte para verlo de otra manera: https://blog.ploeh.dk/2015/08/03/idiomatic-or-idiosyncratic/

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.