[解決済み] nullを返すのは設計ミス?[クローズド]
2022-06-12 23:16:37
質問
メソッドから返されるNULL値をチェックするのはデザイン的に良くないという声を聞くことがあります。その理由をお聞きしたいです。
疑似コードです。
variable x = object.method()
if (x is null) do something
どのように解決するのですか?
null を返さない根拠は、null をチェックする必要がないため、コードに次のような記述が不要になることです。 別の経路をたどる をする必要がないからです。 あなたは Nullオブジェクトパターン をチェックするとよいでしょう。
例えば、私がJavaでコレクションを返すメソッドを定義するとしたら、典型的には空のコレクションを返すことを好むでしょう(すなわち
Collections.emptyList()
を返す方が、クライアントコードがすっきりするからです。
Collection<? extends Item> c = getItems(); // Will never return null.
for (Item item : c) { // Will not enter the loop if c is empty.
// Process item.
}
...よりもきれいです。
Collection<? extends Item> c = getItems(); // Could potentially return null.
// Two possible code paths now so harder to test.
if (c != null) {
for (Item item : c) {
// Process item.
}
}
関連
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] mixinとは何か、なぜ有用なのか?
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み] メソッドチェイニング - なぜ良い習慣なのか、そうでないのか?
-
[解決済み] Dependency InjectionはEncapsulationを犠牲にしなければならないのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Inversion of Controlとは?
-
[解決済み] リスコフ置換原理の例として、どのようなものがありますか?
-
[解決済み] 関数型プログラミングとオブジェクト指向プログラミングの比較【終了しました
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み] コヒーシ ョンとカップリングの違い
-
[解決済み] 例外を発生させるタイミングは?
-
[解決済み】「結合度が低く、結合度が高い」とはどういう意味ですか?
-
[解決済み] ミュータブルとイミュータブルのオブジェクト
-
[解決済み] ProxyパターンとDecoratorパターンの違い
-
[解決済み] メソッドチェイニング - なぜ良い習慣なのか、そうでないのか?