[解決済み】関数はnullまたは空のオブジェクトを返すべきですか?
2022-04-13 03:54:48
質問
とは何ですか? ベストプラクティス 関数からデータを返すとき。 Nullと空のオブジェクトのどちらを返すのが良いのでしょうか? また、なぜどちらか一方を選ぶべきなのでしょうか?
これを考えてみましょう。
public UserEntity GetUserById(Guid userId)
{
//Imagine some code here to access database.....
//Check if data was returned and return a null if none found
if (!DataExists)
return null;
//Should I be doing this here instead?
//return new UserEntity();
else
return existingUserEntity;
}
このプログラムでは、そのGUIDを持つユーザー情報がデータベースに存在しない有効なケースがあると仮定しましょう。 この場合、例外を投げることは適切ではないのでしょうか? また、例外処理はパフォーマンスを低下させるという印象があります。
解決方法は?
データがないことを示す場合は、通常、nullを返すのが最適な方法です。
空のオブジェクトはデータが返されたことを意味しますが、NULLを返せば何も返されなかったことが明確になります。
さらに、NULLを返すと、オブジェクトのメンバにアクセスしようとしたときにNULL例外が発生します。空のオブジェクトのメンバーへのアクセスは失敗しないので、バグが発見されないまま放置される可能性があります。
関連
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?
-
[解決済み] JSONをC#のダイナミックオブジェクトにデシリアライズする?
-
[解決済み] CとC++でmain()は何を返すべきですか?
-
[解決済み] Bash関数におけるreturnとexitの違いについて
-
[解決済み] 空のIEnumerableを返すにはどうしたらいいですか?
-
[解決済み】Bash関数の戻り値
-
[解決済み】ASP.NET Core RC2 Web ApiからHTTP 500を返すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み] 検索メソッドは、戻り値を生成できない場合、'null'を返すか、例外を投げるべきですか?[クローズド]
-
[解決済み】nullと空のコレクションのどちらを返すのが良いですか?