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 Clientpropiedad siempre debe establecerse (es decir, no es nula) para Client == nullque nunca ocurra y el valor de Id 0denota 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 0es un valor falso para Idy cuando la Clientpropiedad siempre debe establecerse, debe arrojar un exceptionen getcuando la Clientpropiedad sea nula
3) Cuando la Clientpropiedad siempre debe establecerse, simplemente regresa Client.Idy deja que el código arroje una NullRefexcepción cuando la Clientpropiedad resulta ser nula.
¿Cuál de estos es el más correcto? ¿O hay una cuarta posibilidad?