2011-01-10 11 views
3

String.Emptyとnullの違いについては、(多かれ少なかれ)皆知っています。私は "普通の"開発(私はASP.NETアプリケーション、WinFormsアプリケーション - C#.NETコードのすべて)のサーバーサイド部分の開発を意味するが、私は何のために良いのかはまだ決まっていないが、 〜についての記事。String.Emptyまたはnull:サービスから "Error"フィールドを返す方が良いでしょうか?

しかし、サービス(ASP.NET WebServiceまたはWCFサービス)から文字列値を返すときに使用する方が良い比較はありませんでした。

は、私がnullまたはString.Emptyのどのようなご提案があるを返す必要があります:

  1. 私は(nullまたは空には「エラーがない」を意味します)「エラー」メッセージを返すために必要がある場合。
  2. 「電子メール」フィールドの値を返す必要がある場合(nullまたは空白は「電子メールが指定されていません」を意味します)。

任意の考えは歓迎されています。

答えて

3

これはすべて趣味、スタイル、一貫性の問題です。すでにヌル/空を返す他のサービスがありますか?もしそうなら、それらをマッチさせるのが最善です。それ以外の場合は、私の個人的な意見ではnullは空ではない方が良い。 nullはより良い監視値として役立ちます。エラーが発生したために空の文字列が認識される可能性がありますが、エラーの詳細は返されませんでした。

+0

これは良い点です。エラーが発生したために空の文字列が認識される可能性がありますが、エラーの詳細は返されませんでした。ありがとう – Budda

0

は常にstring.Emptyの代わりnullを返します。彼らはあなたのサービスによって返される文字列の操作を呼び出す場合

その後serviceメソッドを使用するコードは、およそNullReferenceExceptionを気にする必要はありません。

ヌルチェックを繰り返すと、コードが醜く見苦しくなります。

+2

防御コーディングは、とにかくnullの戻り値をチェックすることを提案します。 – cjk

+0

何らかの形であなたと同意しますが、私の主張は別です:そのメソッドを呼び出す前にインスタンスが 'nullでない場合'をチェックする必要があります。 – Budda

0

NULLとstring.emptyは純粋な要求フォームで同じ方法で表されます。違いは、nillable = "true"を設定するかどうかに関して、XSDマッピングです。それはあなたのサービスのいずれかの第3部の消費者に誤解されないように

よりよい要求は、「無効」の結果を返すことが考えられます。

1

一般的に、コードの残りの部分がこのような状況をどのように処理するかと一貫性のある戻り値を使用します。あなたが説明したケースはどちらかといえば確かに行くことができます。私の意見では、エラーが存在しないときにnullを返すエラーメッセージは意味がありますが、電子メールは空の文字列として意味があります(電子メールは入力/指定されていないので)。

0

概念的には、Nullは未定義の値を表します。この議論のために、ユーザーが電子メールアドレスを持っているかどうかを示すフラグがあるとしましょう。このフラグが設定されていない場合、Nullは電子メールアドレスの適切な値になります。フラグが設定されている場合、空の文字列は電子メールアドレスが指定されていないことを示します。

エラーメッセージが表示された場合、Nullは未定義と表現されます。報告するエラーはありません。空の文字列は、エラーが発生したことを示しているかもしれませんが、何らかの理由で詳細が提供されていません。

あなたのサービス内で一貫している限り、どちらでも問題ありません。

関連する問題