1. ホーム
  2. oop

[解決済み] 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.
  }
}