2017-03-31 8 views
2

nullオブジェクトパターンが実際にデバッグを困難にするかどうかは疑問でした。たとえば、メソッドがnullではなく空のオブジェクトを返す場合、エラーをスローしません。これは、信頼できるクリーンなコードの点では良いですが、実際には予期しないバグを引き起こす可能性のある何もしない空のオブジェクトが使用されていることを意味することはできません。プログラマーに問題を指摘するためのnull例外があるのではなく、それを見つけるのに役立つものは何もありません。nullオブジェクトパターンはデバッグをより複雑にしますか?

+0

@BCartoloいくつかの言語(Rubyなど)では、ヌル?メソッドを呼び出すことができるオブジェクトがあります。言語がこれをサポートしていない場合は、デザイン内でオブジェクトとしてnullを表現でき、参照がnullにならないようにすることができます。 – cyroxis

答えて

2

はいです。ヌルオブジェクトが値を返す必要がある場合(例のように)、ヌルの問題を延期しているにもかかわらずヌル値をチェックする必要があるからです。

私は、2つの条件が満たされていると非常に役立つヌルオブジェクトを発見しました。

  1. 戻り値のないメソッドのみを呼び出しています。
  2. 値がない場合、アクションを無視することはできません。

簡略例はコールバックです。 nullオブジェクトパターンでは、コールバック

if (callback != null) { 
    callback.onDoSomething(someArg); 
} 

を使用する前に、あなたは、コールバックのデフォルト値はnullのオブジェクトであり、ヌルチェックを回避することができ

class Callback { 
    void onDoSomething(SomeArg someArg); 
} 

通常は、nullのチェックを行う必要がありますあなたのコードの残りの部分で。ボイラープレートのコードが少なくても、重要な部品を見やすくできます。

関連する問題