※本記事は、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とかで回避したほうがスマートだと思う。