エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【意訳+要約】Why 0 is better than NULL sometimes

※本記事は、Bardによる意訳+翻訳を活用し、レイアウト調整したものです。
※感想は、オリジナルです。

原文

Why 0 is better than NULL sometimes - DEV Community

意訳+要約

0 は null よりも優れている理由

null は、値が存在しないことを示す特殊な値です。一方、0 は、数値の値が 0 であることを示す値です。このブログでは、null と 0 の違いと、null ではなく 0 を使用する方が適切な場合について説明します。

null の問題点

null には、以下の問題点があります。

  • null は、値がないことを示す値ですが、値が存在しないことを意味するわけではありません。例えば、null の配列は、空の配列ではなく、要素がすべて null の配列です。
  • null は、型が指定されていない場合、どんな型にも代入することができます。これにより、型不一致によるバグの原因となる可能性があります。
  • null は、コンパイラによってチェックされないため、実行時に null を参照するコードが実行される可能性があります。これにより、NullPointerException などのエラーが発生する可能性があります。

0 の利点

0 には、以下の利点があります。

  • 0 は、値が存在しないことを明確に示します。
  • 0 は、型が指定されているため、型不一致によるバグの原因となることはありません。
  • 0 は、コンパイラによってチェックされるため、実行時に null を参照するコードが実行されることはありません。

0 を使用するべき場合

null ではなく 0 を使用する方が適切な場合としては、以下のようなものが挙げられます。

  • 値がないことを明確に示す必要がある場合
  • 型を指定できる場合
  • コンパイラによってチェックできる場合

結論

null は、値がないことを示す特殊な値ですが、型が指定されていない場合、型不一致によるバグの原因となる可能性があります。また、null はコンパイラによってチェックされないため、実行時に NullPointerException などのエラーが発生する可能性があります。

一方、0 は、値が存在しないことを明確に示し、型が指定されているため、型不一致によるバグの原因となることはありません。また、0 はコンパイラによってチェックされるため、実行時に NullPointerException などのエラーが発生することはありません。

したがって、null ではなく 0 を使用する方が適切な場合が多いと言えます。

感想

ちょっと暴論過ぎないか?

nullのメリットが書いてないが、何もないということか?
異常値であることが分かるのが、nullのメリットだと、個人的には思っている。
NullPointerException が、ウザいのは分かるけど、0を使うよりは、Optionalとかで回避したほうがスマートだと思う。