投稿数 - 437, コメント - 59536, トラックバック - 156

null じゃない

void Func()

    Hoge h = FindHogeHoge("HogeName");
    if (h != null)
    {
        // h に対して何か処理をする。
    }
}

上記のようなコードを本当によく見かける。 

h が null でない事を確認しているのだから、まぁ良い作法のコードなのだろうけど、「じゃ、null のときはどうすんの?」ってのが気になる。書いた本人に訊くと、十中八九「null はあり得ない」って返答が来る。「あり得ないならチェックの必要ないんじゃない?」って気がするんだが。次のようなコードの方が良くなくなくない?

void Func()
{
    Hoge h = FindHogeHoge("HogeName");
    if (h == null) throw new ApplicationException("アリエナーイ");
    // h に対して何か処理をする。
}

バグったときも、とてもオチャメなメッセージで場を和ませてくれる。

投稿日時 : 2007年7月4日 0:30

フィードバック

# re: null じゃない

型検証の時はスルーすることがたまにありまし。

void Func() {
  Hoge h = GetObj() as Hoge;

  if (h == null) {
    return;
  }

  // h に対して何か処理をする。
}
2007/07/04 0:42 | じゃんぬねっと

# re: null じゃない

メッセージはアリエナーイけどね。
2007/07/04 0:43 | 中博俊

# re: null じゃない

>型検証の時はスルーすることがたまにありまし。

null のときの意図がはっきりしているので良し!!
2007/07/04 23:34 | 囚人

# re: null じゃない

新人さんとかにエラーから順に落としていくようにコーディングするように、とわざわざ指導しています。

ネストが深くなるのを避ける狙いも多少はあるけども、やはりifの中に処理を書くってやっちゃうと、elseのときのことを忘れる人が多いんですよね。
例外の使い方を覚えさせるのが結構大変だ orz
2007/07/06 19:02 | nagise

# re: null じゃない

> 新人さんとかにエラーから順に落としていくようにコーディングするように、とわざわざ指導しています。
> ネストが深くなるのを避ける狙いも多少はあるけども、やはりifの中に処理を書くってやっちゃうと、elseのときのことを忘れる人が多いんですよね。


ですね。私もそういう方が良いスタイルだと思います。
逆にベテランさんの方が書くコードの方が、ネストが深かったり、else の事を考えてなかったりするんですよね。
2007/07/06 19:15 | 囚人

コメントの投稿

タイトル
名前
URL
コメント