Temos este código que, quando simplificado, fica assim:
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; }
}
Agora temos três pontos de vista.
1) Este é um bom código porque a Clientpropriedade deve sempre ser configurada (ou seja, não nula), para Client == nullque nunca ocorra e o valor do Id 0denote um ID falso de qualquer maneira (essa é a opinião do autor do código ;-))
2) Você não pode confiar no chamador para saber que 0é um valor falso para Ide quando a Clientpropriedade sempre deve ser definida, você deve lançar um exceptionno getquando a Clientpropriedade for nula
3) Quando a Clientpropriedade sempre deve ser definida, basta retornar Client.Ide deixar o código lançar uma NullRefexceção quando a Clientpropriedade for nula.
Qual destes está mais correto? Ou existe uma quarta possibilidade?