1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

null参照を滅せよ!

Posted at
1 / 9

おさらい・null参照とは


$10億ドルの損失

  • 実際、JavaやC#、JavaScriptでnull参照が原因でプログラムが落ちるのはひじょーによく目にする

null参照の厄介なところ

  • あらゆる参照がnullとなる可能性がある
  • 原因と離れたところで例外が起きる

関数を作る際の心得(1/2)

  • 安易にnullを返さない
  • 安易にnullを返さない
  • 安易にnullを返さない

1万回唱えても足りない!
例外をcatchしない、と並べて家訓にしたい。


関数を作る際の心得

  • 例外的状況を表現するのにnullを使うのは明確な誤り
  • そう、ここは例外の出番
if (!arg) throw new Exception("この関数の引数はnullやundefinedを許容しません")

nullを避ける

  • null初期化をやめる
    これを徹底するだけでプログラムのバグは半分になる(割りと本気で言ってます)
  • そもそも変数を作らない
  • nullかもしれないことを表現する型を使う
    JavaのOptional型
    ※C#のNullableは違う!

可能性のある結果を全て表現可能な型を作る

  • JavaのOptional型相当品を作る
  • HaskellのMaybe相当品ならすぐ作れる

最後に

  • nullを軽く考えないようにしましょう
  • nullの代わりとなる仕組みを覚えましょう&作りましょう
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?