lunes, 24 de octubre de 2011

Nullable<Me>

Pensé que no tocaría hacerlo, pero finalmente ha sucedido. Se mantienen dos ramas de código, del mismo código —mejor dicho, de código parecido— para que compile en Framework 1.1 (año 2003) y Framework 3.5 (año 2007) de .NET. Tanto a nivel sintáctico como semántico, la versión 3.5 es muchísimo mejor. Y no entiendo la obstinación por mantener las dos ramas, cuando la destinada al código 1.1 N-O S-E U-S-A y estamos a las puertas de que aparezca la versión 4.5 o la 5, directamente, y que traerá cosas tan chulas como el mecanismo async para definir métodos (algo que ya está en F#). Pero ha tocado y llevo todo el día peleándome con esto. He tenido que adaptar toda la semántica de tipos nulos, incorporada a partir de la versión 2.0 del Framework y de la que he hecho uso intensivo en el proyecto, posible y de uso grácil con el aporte de los genéricos y que permite escribir cosas tan sencillas como las del siguiente código (las dos formas son aceptables y significan lo mismo), sin recurrir al boxing y al unboxing:

 
Nullable<int> enteroConNulo = null;
int? enteroConNulo2 = null;
 

Para ello he tirado de la biblioteca NullableTypes. Descubrí esta biblioteca a finales del año 2002 o a principios del 2003, no recuerdo, y se convirtió en eje fundacional de la base de datos orientada a objetos que estábamos montando en la empresa como parte del proyecto en el que estábamos trabajando entonces. Hace tanto tiempo de eso que no terminaba de recordar el nombre y he tenido que andar rebuscando aquí y allá, hasta que di con ella. Lo que me sorprende es que aún exista la página, que no se toca desde 2004. Increíble esto de Internet, sí señor.

Aquí queda anotado por si dentro de otros ocho años me piden que adapte el código desarrollado para el Framework MIL a la versión 1.1. Visto lo visto, son capaces de mantenerlo para entonces.

No hay comentarios: