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 Clientproprietà deve essere sempre impostata (cioè non nulla) in modo Client == nullche non si verifichi mai e il valore Id 0indica 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 Ide quando la Clientproprietà deve sempre essere impostata dovresti inserire un exceptionnel getquando la Clientproprietà sembra essere nulla
3) Quando la Clientproprietà deve essere sempre impostata, è sufficiente tornare Client.Ide lasciare che il codice generi NullRefun'eccezione quando la Clientproprietà risulta essere nulla.
Quale di questi è più corretto? O c'è una quarta possibilità?