「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 項目 - null ではなく空のコレクションまたは配列を返します

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

2024 年 11 月 6 日に公開
ブラウズ:793

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 getCheeses() {
    return cheesesInStock.isEmpty() ? null : new ArrayList(cheesesInStock);
}

不適切な顧客対応:

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

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

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

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

public List 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 が簡素化され、エラーが防止され、パフォーマンスに悪影響を及ぼすことはほとんどありません。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/giselecoder/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos-1ej6?1 侵害がある場合は、study_golang までご連絡ください。 @163.com 削除
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3