これは、私たちが作成する種類の Web サイトに共通するタスクですが、クラスを設計する最善の方法がわかりません。アジャイル開発にかなり慣れていないので、悪い習慣を身につけないようにしたいと思っています。
私は、いくつかの国ごとにページを含む Web サイトに取り組んでいます。CMS を使用すると、ユーザーは各国のページのコンテンツ (タイトル、コピーなど) を変更できます。時刻表 (ダウンロード可能な PDF) を CMS で管理できるかどうかを尋ねられました。
Country クラスと Timetable クラスがあると仮定すると、(アジャイルの観点から) 何が一番良いでしょうか?
- 国クラスにプロパティを作成します。
public List<Timetable> Timetables
- Timetable クラスにプロパティを作成します。
public Country AssignedCountry
確かに、何が最善かは、その情報がどのように使用されるかによって決まります。前述のように、その国の時刻表を表示する各国のページがあります。ただし、すべての時刻表をリストし、理想的にはそれらの国を表示する時刻表ページもあります。
オプション 1 を使用すると、国ページに時刻表を簡単にリストできますが、時刻表ページの各時刻表には、割り当てられている国への参照がありません。
オプション 2 は、すべての時刻表を一覧表示し、関連する国を表示できるため、時刻表ページが簡単になることを意味します。ただし、各国の時刻表が不明なため、国のページはより扱いにくく、関連する時刻表を取得するには別の方法が必要です。
オプション 3? 時刻表は実際には国のプロパティではなく、同様に国は PDF ファイルのプロパティではないため、呼び出して取得できるメソッドを含む静的ユーティリティ クラス (ファクトリ?) を作成する方がよいと考えています。必要な情報 - 国別の時刻表、または国別の時刻表。DB の国と時刻表の関係は多対多であるため、これがより論理的な解決策のようです。
私たちのクライアントは通常、CMS により多くの機能を追加したいと考えており、通常、物事がどのように関連しているかを決定することは問題ではありませんが、この種のことは私を悩ませます。
私は物事を過度に複雑にしていますか?私が見逃している簡単な経験則やテクニックはありますか?