0
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?

More than 1 year has passed since last update.

『もういい加減「nullチェックをしたら安全」とかわけのわからないことを言うのはやめよう』をうろ覚えで書いた記事

Last updated at Posted at 2023-07-23

前書き

昔のQiitaに「Nullチェックはいらない。むしろNullPointerExceptionは前向きに発生させるべきだ。」みたいな簡潔な内容の記事(※)があって感銘を受けたのですが、それが今現在全く見つからない(多分消えた)のでうろ覚えで書き起こしてみます。


・2019年くらい?に見た記憶。記事自体はそれ以前に書かれたかもしれない。
・ブラウザの1画面で完結するような短い内容。

(追記)
見つけた。いい記事なので読みましょう。消えたのが残念。

本文

最近の言語はNull安全が取り込まれているのに対し、JavaはいちいちNullチェックをしないといけないから面倒と言われている。

public void func(String param) {
    if (param == null) {
        return;
    }
    System.out.println(param.toUpperCase());
}

だが、そもそもこう書けばいいだけではないだろうか。

public void func(String param) {
    System.out.println(param.toUpperCase());
}

NullPointerExceptionはNullではいけない変数を教えてくれる大切な例外であり、
変数の実体がないというバグの発見を教えてくれるものだ。

Nullではいけない処理はNullでも動くようにするのではなく、むしろ積極的にNullPointerExceptionを発生させるべきだ。(意訳)

個人の意見

(予防線:最近のJavaは全く詳しくないです!!)
そもそもNullPointerExceptionが発生するということは本来は実体があることを想定している処理の可能性が高く、Nullのオブジェクトが存在することが異常でバグの可能性が高いと思われます。
そのため「JavaのようなNull安全ではない言語」はNullPointerExceptionを隠蔽させる行為はすべきではないでしょう。(もちろんNullが来ることが想定されているなら別ですが)

0
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
0
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?