1. ホーム
  2. c#

[解決済み】関数は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例外が発生します。空のオブジェクトのメンバーへのアクセスは失敗しないので、バグが発見されないまま放置される可能性があります。