Tenemos este código que, cuando se simplifica, se ve así:
public class Room
{
public Client Client { get; set; }
public long ClientId
{
get
{
return Client == null ? 0 : Client.Id;
}
}
}
public class Client
{
public long Id { get; set; }
}
Ahora tenemos tres puntos de vista.
1) Este es un buen código porque la Client
propiedad siempre debe establecerse (es decir, no es nula) para Client == null
que nunca ocurra y el valor de Id 0
denota un Id falso de todos modos (esta es la opinión del escritor del código ;-))
2) No puede confiar en que la persona que llama sabe que 0
es un valor falso para Id
y cuando la Client
propiedad siempre debe establecerse, debe arrojar un exception
en get
cuando la Client
propiedad sea nula
3) Cuando la Client
propiedad siempre debe establecerse, simplemente regresa Client.Id
y deja que el código arroje una NullRef
excepción cuando la Client
propiedad resulta ser nula.
¿Cuál de estos es el más correcto? ¿O hay una cuarta posibilidad?