Mamy ten kod, który po uproszczeniu wygląda następująco:
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; }
}
Teraz mamy trzy punkty widzenia.
1) To jest dobry kod, ponieważ Clientwłaściwość powinna być zawsze ustawiona (tj. Nie pusta), więc Client == nullnigdy się nie pojawi, a wartość 0Id i tak oznacza fałszywy identyfikator (taka jest opinia autora kodu ;-))
2) Nie można powoływać się na rozmówcy, aby wiedzieć, że 0jest fałszywa wartość Id, a gdy Clientnieruchomość powinna być zawsze należy rzucać exceptionw getgdy Clientnieruchomość zdarza się być null
3) Gdy Clientwłaściwość powinna być zawsze ustawiona, po prostu powracasz Client.Idi pozwalasz kodowi zgłosić NullRefwyjątek, gdy Clientwłaściwość jest zerowa.
Który z nich jest najbardziej poprawny? Czy jest czwarta możliwość?