前書き
昔の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が来ることが想定されているなら別ですが)