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 Client
propriedade deve sempre ser configurada (ou seja, não nula), para Client == null
que nunca ocorra e o valor do Id 0
denote 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 Id
e quando a Client
propriedade sempre deve ser definida, você deve lançar um exception
no get
quando a Client
propriedade for nula
3) Quando a Client
propriedade sempre deve ser definida, basta retornar Client.Id
e deixar o código lançar uma NullRef
exceção quando a Client
propriedade for nula.
Qual destes está mais correto? Ou existe uma quarta possibilidade?