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