Tuesday, October 16, 2007

Pequeña refactorizacion para trabajar con tipos nullables

Este articulo aplica a: C# 2.0

C# 2.0 nos trajo una nueva caracteristica: tipos nullables, seguramente ya sabes que son y los has usado por algun tiempo, pero, cuantas veces has visto (o escrito) codigo como este:

//SomeClass.SomeObject.BoolProperty es de tipo bool?

if (SomeClass.SomeObject.BoolProperty.HasValue && SomeClass.SomeObject.BoolProperty.Value)...
//algun codigo

porque no puedes escribir:
if (SomeClass.SomeObject.BoolProperty)...

Ya que no compilaria

El problema que tengo con ese codigo es que es repetitivo y es muy largo, entonces que podemos hacer?
Puedes escribirlo asi:

if (SomeClass.SomeObject.BoolProperty??false)

mucho mejor no? si BoolProperty tiene un valor y el valor es true, nos regresara true, de lo contrario regresara false; ahora, por supuesto que puedes usar la misma tecnica con otros tipos de datos que sean nullable, veamos algunos ejemplos:

string firstName;
public string FirstName { get{ return firstName??""; }}

Este codigo nos aseguraria que FirstName nunca regrese null (Estoy seguro que has visto muchisimos "object reference not set blablabla" debido a que te falta este codigo)

Otros ejemplos:
int? result;
...
return result??-1; //si no obtuvimos algun resultado, devolver -1
---------------------------------------------------
bool? result;
...
return result??false;
---------------------------------------------------

Eso es todo, espero que les sirva
Recuerda que el mejor codigo, es... no codigo!

No comments: