Abbiamo questo codice che, quando è semplificato, assomiglia a questo:
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; }
}
Ora abbiamo tre punti di vista.
1) Questo è un buon codice perché la proprietà Client
dovrebbe sempre essere impostata (cioè non nulla) in modo che Client == null
non si verifichi mai e il valore Id 0
denota comunque un id falso (questa è l'opinione di lo scrittore del codice; -))
2) Non puoi fare affidamento sul chiamante per sapere che 0
è un valore falso per Id
e quando la proprietà Client
dovrebbe sempre essere impostata devi lanciare un exception
nel get
quando la proprietà Client
risulta essere null
3) Quando la proprietà Client
deve sempre essere impostata, devi solo restituire Client.Id
e lasciare che il codice lanci un'eccezione NullRef
quando la proprietà Client
risulta essere nulla.
Quale di questi è più corretto? O c'è una quarta possibilità?