Abbiamo questo codice che, una volta 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 Client
proprietà deve essere sempre impostata (cioè non nulla) in modo Client == null
che non si verifichi mai e il valore Id 0
indica comunque un ID falso (questa è l'opinione dello scrittore del codice ;-))
2) Non puoi fare affidamento sul chiamante per sapere che 0
è un valore falso per Id
e quando la Client
proprietà deve sempre essere impostata dovresti inserire un exception
nel get
quando la Client
proprietà sembra essere nulla
3) Quando la Client
proprietà deve essere sempre impostata, è sufficiente tornare Client.Id
e lasciare che il codice generi NullRef
un'eccezione quando la Client
proprietà risulta essere nulla.
Quale di questi è più corretto? O c'è una quarta possibilità?