nullオブジェクトパターンが実際にデバッグを困難にするかどうかは疑問でした。たとえば、メソッドがnullではなく空のオブジェクトを返す場合、エラーをスローしません。これは、信頼できるクリーンなコードの点では良いですが、実際には予期しないバグを引き起こす可能性のある何もしない空のオブジェクトが使用されていることを意味することはできません。プログラマーに問題を指摘するためのnull例外があるのではなく、それを見つけるのに役立つものは何もありません。nullオブジェクトパターンはデバッグをより複雑にしますか?
2
A
答えて
2
はいはです。ヌルオブジェクトが値を返す必要がある場合(例のように)、ヌルの問題を延期しているにもかかわらずヌル値をチェックする必要があるからです。
私は、2つの条件が満たされていると非常に役立つヌルオブジェクトを発見しました。
- 戻り値のないメソッドのみを呼び出しています。
- 値がない場合、アクションを無視することはできません。
簡略例はコールバックです。 nullオブジェクトパターンでは、コールバック
if (callback != null) {
callback.onDoSomething(someArg);
}
を使用する前に、あなたは、コールバックのデフォルト値はnullのオブジェクトであり、ヌルチェックを回避することができ
class Callback {
void onDoSomething(SomeArg someArg);
}
通常は、nullのチェックを行う必要がありますあなたのコードの残りの部分で。ボイラープレートのコードが少なくても、重要な部品を見やすくできます。
関連する問題
- 1. 複雑なポストパラメータは常にnull
- 2. Nullオブジェクトパターンにリファクタリングしようとしましたが、最終結果が悪化しているようです。
- 3. Facebookメッセンジャーのアプリは、デバッグ手順を複雑にするwebhookを繰り返し呼び出しました。
- 4. デバッグpytests私はかなり複雑で一連のテストを持っている
- 5. ポリマーの複雑なデータバインディンググラフの設計/デバッグ
- 6. Typescriptオブジェクトパターン?
- 7. postMessageはより複雑なオブジェクトを送信できます
- 8. 複数のJSONオブジェクトパターンのSpring IntegrationFlow
- 9. モデルはどのくらい複雑になりますか?
- 10. より複雑なトラバーサル(レンズ)を書く
- 11. 複雑なguiceバインディングをデバッグするためにどのようなテクニックを使いますか?
- 12. これをもう少し複雑にする方法はありますか?
- 13. スプライス割り当ての複雑さをリストしますか?
- 14. AngularJSコントローラ(SonarLint号)に認可さよりもより複雑
- 15. 複雑な構造からのルックアップ値はありますか?
- 16. により大規模かつ複雑なディレクトリ構造にos.walk
- 17. ノックアウトで選択したオブジェクトパターン
- 18. Nativescriptとより複雑なUI
- 19. テキストボックスのラインカウンタ(より複雑な)VB.NET
- 20. Cより複雑な関数のマクロ
- 21. ラケットのランダム関数(より複雑な)
- 22. シンプルなテストまたはより複雑なテスト?
- 23. より複雑なプロジェクトのコアPHPまたはLaravel
- 24. レコードごとに複雑なレイアウトを繰り返します。
- 25. より複雑なAngular 2アプリケーションを構成する方法は?
- 26. DataView.Sortのサイズ/複雑さの制限はありますか?
- 27. 複雑なフォルダ構造によるMavenコンパイルの複雑さ
- 28. 複雑なSQLクエリではっきりしています
- 29. 私のプログラムの複雑さはどのようにしてわかりますか?
- 30. この再帰アルゴリズムの時間複雑度はどのようにしてわかりますか?
@BCartoloいくつかの言語(Rubyなど)では、ヌル?メソッドを呼び出すことができるオブジェクトがあります。言語がこれをサポートしていない場合は、デザイン内でオブジェクトとしてnullを表現でき、参照がnullにならないようにすることができます。 – cyroxis