У нас есть этот код, который при упрощении выглядит следующим образом:
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; }
}
Теперь у нас есть три точки зрения.
1) Это хороший код, потому что Client
свойство всегда должно быть установлено (т. Е. Не равно нулю), чтобы Client == null
никогда не происходило, и значение 0
Id в любом случае обозначает ложный Id (это мнение автора кода ;-))
2) Вы не можете полагаться на то, что вызывающая сторона знает, что 0
это ложное значение, Id
и когда Client
свойство всегда должно быть установлено, вы должны бросить exception
в, get
когда Client
свойство оказывается пустым
3) Когда Client
свойство всегда должно быть установлено, вы просто возвращаетесь Client.Id
и позволяете коду генерировать NullRef
исключение, когда Client
свойство оказывается пустым.
Что из этого является наиболее правильным? Или есть четвертая возможность?