У нас є цей код, який при спрощенні виглядає так:
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ніколи не відбудеться, а значення 0Id все одно позначає помилковий ідентифікатор (така думка автора коду ;-))
2) Ви не можете розраховувати на абонента, який знає, що 0це помилкове значення, Idі коли Clientвластивість завжди має бути встановлено, вам слід кинути exceptionте, getколи Clientвластивість стане недійсною
3) Коли Clientвластивість завжди має бути встановлено, ви просто повернетесь Client.Idі дозвольте коду викинути NullRefвиняток, коли Clientвластивість буде недійсною.
Яке з них найбільш правильне? Або є четверта можливість?