私はあなたの受け入れられた回答に投票し、それに同意しますが、考慮すべきことを教えてもらえますか?
コレクションを直接返さないでください。コレクションの目的を反映した正確な名前のビジネス ロジック クラスを作成します。
これの主な利点は、コレクションにコードを追加できないという事実にあります。そのため、オブジェクト モデルにネイティブの「コレクション」がある場合は常に、オブジェクト モデルにアクセスするためにプロジェクト全体にオブジェクト指向以外のサポート コードが分散されます。
たとえば、コレクションが請求書である場合、未払いの請求書を反復処理するコード内の場所がおそらく 3 つか 4 つあるでしょう。getUnpaidInvoices メソッドを使用できます。ただし、「payUnpaidInvoices(payer, account);」のようなメソッドを考え始めると、真の力が発揮されます。
オブジェクト モデルを作成する代わりにコレクションを渡すと、リファクタリングのクラス全体が思い浮かぶことはありません。
これにより、問題が特にうまくいくことにも注意してください。人々がコレクションを変更したくない場合は、コンテナーにミューテーターを含める必要はありません。後で実際に変更する必要がある場合が 1 つだけあると判断した場合は、それを行うための安全なメカニズムを作成できます。
ネイティブ コレクションを渡しているときに、その問題をどのように解決しますか?
また、ネイティブ コレクションは、追加のデータで強化することはできません。次に (Collection、Extra) を 1 つまたは 2 つ以上のメソッドに渡すことがわかったときに、これに気付くでしょう。これは、「Extra」がコレクションを含むオブジェクトに属していることを示しています。