項目 - null ではなく空のコレクションまたは配列を返します

DDD
リリース: 2024-09-13 06:19:06
オリジナル
592 人が閲覧しました

Item - Retorne coleções ou arrays vazios, em vez de nulos

null を返さない:

  • 空のコレクションまたは配列の代わりに null を返すメソッドでは、例外を回避するために追加のクライアント処理が必要です。

null に関する問題:

  • クライアントは冗長チェックを追加する必要があります (null をチェックする場合)。
  • これらのチェックが省略されていると気づかれず、バグが発生する可能性があります。
  • コレクションまたは配列を返すメソッドの実装が困難になります。

null に対する引数:

  • ボトルネックであることが判明しない限り、空のコレクションまたは配列を割り当てるパフォーマンスについて心配する必要はありません。

効率的な代替案:

  • null の代わりに空のコレクションまたは配列を使用します。
  • 不変コレクションは繰り返し返すことができます (例: Collections.emptyList()、Collections.emptySet())。
  • 空の配列も効率的に返すことができます。

最適化されたパフォーマンス:

  • 不必要な新しい割り当てを避けるために、再利用可能な空の不変コレクションを使用します。
  • 毎回新しい配列を作成するのではなく、同じ空の配列を返します

コード例:
null を返す不正なメソッド:

// Exemplo incorreto
public List<Cheese> getCheeses() {
    return cheesesInStock.isEmpty() ? null : new ArrayList<>(cheesesInStock);
}

ログイン後にコピー

顧客への不適切な対応:

List<Cheese> cheeses = shop.getCheeses();
if (cheeses != null && !cheeses.isEmpty()) {
    // Lógica para lidar com queijos disponíveis
}

ログイン後にコピー

空のコレクションを返す正しいメソッド:

// Exemplo correto
public List<Cheese> getCheeses() {
    return cheesesInStock.isEmpty() ? Collections.emptyList() : new ArrayList<>(cheesesInStock);
}

ログイン後にコピー

不変の空のコレクションの使用:

public List<Cheese> getCheeses() {
    return cheesesInStock.isEmpty() ? Collections.emptyList() : new ArrayList<>(cheesesInStock);
}

ログイン後にコピー

空の配列で使用します:

// Retorno de array vazio corretamente
public Cheese[] getCheeses() {
    return cheesesInStock.toArray(new Cheese[0]);
}

ログイン後にコピー

空の配列の使用の最適化:

private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];

public Cheese[] getCheeses() {
    return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
}

ログイン後にコピー

結論:
null を返さない: 常に空のコレクションまたは配列を優先します。これにより API が簡素化され、エラーが防止され、パフォーマンスに悪影響を及ぼすことはほとんどなくなります。

以上が項目 - null ではなく空のコレクションまたは配列を返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!