String.Empty или null: что лучше вернуть для поля «Ошибка» из сервиса? - PullRequest
3 голосов
/ 10 января 2011

Мы все знаем (более или менее) о разнице между String.Empty и null.Я до сих пор не решил, что для меня лучше в «обычной» разработке (я имею в виду разработку серверной части приложения ASP.NET, приложения WinForms - всего, что является кодом C # .NET), но я видел и читал многостатьи о.

Но я не видел сравнения, что лучше использовать, когда вы возвращаете строковые значения из сервисов (ASP.NET WebService или WCF service).

Каково ваше предложение, если я должен вернуть ноль или String.Empty:

  1. Когда мне нужно вернуть сообщение «Ошибка» (ноль или пустое значение будет означать «ошибок нет»);
  2. Когда мне нужно вернуть значение поля 'Email' (пустое или пустое значение будет означать 'email не указан).

Любые мысли приветствуются.

Ответы [ 5 ]

3 голосов
/ 10 января 2011

Это все дело вкуса, стиля и последовательности. У вас есть другие сервисы, которые уже возвращают ноль / пусто? Если так, то лучше всего соответствовать им. В противном случае, по моему личному мнению, ноль лучше, чем пустой. Нуль служит лучшей дозорной ценностью. Пустая строка может восприниматься как ошибка, но детали ошибки не возвращаются.

1 голос
/ 10 января 2011

Как правило, я бы использовал любое возвращаемое значение, более соответствующее тому, как остальная часть вашего кода обрабатывает эту ситуацию.Случаи, которые вы описали, могут, конечно, пойти в любую сторону;по моему мнению, сообщение об ошибке, возвращающее ноль, если нет ошибки, имеет больше смысла, тогда как электронная почта имеет больше смысла как пустая строка (так как электронная почта не была введена / указана).

0 голосов
/ 10 января 2011

Концептуально, Null представляет неопределенное значение.Ради этого аргумента, скажем, у вас есть флаг, который указывает, есть ли у пользователя адрес электронной почты или нет.Если этот флаг не установлен, значение адреса электронной почты будет нулевым.Если флаг установлен, пустая строка будет указывать, что адрес электронной почты не был предоставлен.

С сообщением об ошибке я бы снова сказал, что Null представляет неопределенное значение, например, нет сообщения об ошибкеПустая строка может указывать на то, что произошла ошибка, но по какой-то причине подробности не были предоставлены.

Пока вы последовательны в своих услугах, все равно должно быть в порядке.

0 голосов
/ 10 января 2011

NULL и string.empty представлены одинаково в чистой форме запроса.Разница заключается в отображении XSD в отношении установки nillable = "true" или нет.

Лучшим запросом, вероятно, является возвращение «недопустимого» результата, чтобы его не могли неправильно понять третьи стороны ваших услуг.

0 голосов
/ 10 января 2011

Всегда возвращайте string.Empty вместо null.

Тогда коду, использующему метод службы, не придется беспокоиться о NullReferenceException, если они вызывают операцию со строкой, возвращаемой вашей службой.

Повторяющиеся нулевые проверки делают ваш код уродливым и трудным для чтения.

...