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ż Client
właściwość powinna być zawsze ustawiona (tj. Nie pusta), więc Client == null
nigdy się nie pojawi, a wartość 0
Id i tak oznacza fałszywy identyfikator (taka jest opinia autora kodu ;-))
2) Nie można powoływać się na rozmówcy, aby wiedzieć, że 0
jest fałszywa wartość Id
, a gdy Client
nieruchomość powinna być zawsze należy rzucać exception
w get
gdy Client
nieruchomość zdarza się być null
3) Gdy Client
właściwość powinna być zawsze ustawiona, po prostu powracasz Client.Id
i pozwalasz kodowi zgłosić NullRef
wyjątek, gdy Client
właściwość jest zerowa.
Który z nich jest najbardziej poprawny? Czy jest czwarta możliwość?