それは本当にあなたの要件/環境に依存します。
たとえば、双方向の依存関係があります。それらは維持するのが面倒ですが、これを使用するクライアントにとっては良いことです。もっと重要なことは何ですか?多かれ少なかれ同じ頻度で両方の方法をナビゲートする必要がありますか?
完全なオブジェクトを保存します。代わりにプロキシを保存するか、ID とリポジトリを保存する必要があるかもしれません。機能と非機能の両方の要件について知るまで、誰にもわかりません。
実際、要件がない場合、要件を満たすのに役立たない場合はクラスを持つべきではないため、設計は間違っています。
ソフトウェア設計に絶対的な善悪はありません。そのような決定が可能であれば、手動で行う必要はなく、すべての現代言語で言語機能として利用できるようになります. 設計とは、要件を理解し、設計の決定がそれらの要件の達成度に与える影響を理解することです。
したがって、デザインについて学びたい場合は、次のことを試してください。
単純な機能要件を取り上げて、機能以外の要件が変化すると設計がどのように変化するかを考えてみてください。チップ カード上で実行する必要があります。毎秒数千のリクエストを処理する必要があります。書き込みが多く、読み取りが少ない。読み取りが多く、書き込みが少ない。...