Я в дилемме. (Пониженная) задача состоит в том, чтобы перепроектировать следующие данные класса ГельдераПредпочтительный способ установки значений по умолчанию для нулевых свойств?
class Stuff
{
public String SomeInfo { get; set; }
}
для размещения спроса, нулевого не должен быть возвращен. Я могу думать о двух способах достижения этого и после глубокого рассмотрения 15 минут, я просто не могу решить, какой из них предпочтительнее.
Подход по конструктору.
class Stuff
{
public String SomeInfo { get; set; }
public Stuff() { SomeInfo = String.Empty; }
}
Подход по недвижимости.
class Stuff
{
private String _SomeInfo;
public String SomeInfo
{
get { return _SomeInfo ?? String.Empty; }
set { _SomeInfo = value; }
}
}
Обратите внимание, что создание Материал случаях может быть сделано с помощью конструктора, а также инициализации, если это какое-то значение. Насколько мне известно, не будет никаких других ограничений (но вы знаете, как спецификации клиентов не всегда отражают реальность).
Ну, ваш первый вариант не соответствует вашим требованиям - так как я все же могу установить свойство null. # 2 - ваш единственный реальный выбор. –
Если по инициализации вы подразумеваете, что какая-то форма десериализации должна знать, что некоторые реализации не выполнят код конструктора. – Rafal
Другим незначительным ароматом на # 2 может быть проверка ввода при установке значения, а не при извлечении. Если вы обнаружите, что вы очень часто извлекаете значения «null/Empty», вместо этого выполняете проверку один раз/редко, когда настройка может быть предпочтительной. EDIT: Обратите внимание, что это предполагает, что вы достаточно бдительны, чтобы не установить для поля поддержки значение null. –