質問: 個人またはチームの間に存在する可能性のあるスポーツをモデル化する場合、どのように名前を付ければよいですか? テニスはシングルスまたはダブルスでプレーされます。 「プレーヤー」はダブルスを考慮に入れないため、テニススコアリングモデルのロジックがその命名全体を通じて「チーム」を参照するようにすることを検討しました。ただし、両方のモードに対応するためにコード全体でteamoneとteamtwoを確認しても、1人のチームは意味をなさず、スポーツは通常シングルとしてプレーされるため、扱いにくいようです。これを調整する良い方法は何でしょうか?私は swift api設計ガイドライン を使用しようとしているので、それを遵守しようとします。たぶん私はバイクシェディングで、teamoneとteamtwoは不正確でもいいのですが?
回答: プレーヤーは、チームを構成する人数に関係なく、プレーヤーです。片側に複数のプレーヤーがいる場合、チームはチームです。名前として「サイド」を使用できますが、ここでは抽象化が欠落していると思います。シングルまたはダブルのスコアリングは同じですが、ゲームプレイとサイドごとのプレーヤー数に若干の違いがあります。これは、ロジックとデータの両方の違いにつながります。継承の素晴らしい例のように聞こえます。tennismatch抽象親クラスと2つの具象サブクラス(singlesmatchとdoublesmatch)が必要です。これにより、物事をそのまま命名するために必要な分割が得られます。 singlesmatchには2つのサイドがありますが、サイドごとに1人のプレーヤーのみです。 doublesmatchには、それぞれ2人のプレーヤーで構成される2つの側面もあります。抽象化を適切に識別したので、これがキーです。物事に適切な名前を付けることができます。 プレーヤー スコア テニスの試合 tennismatchにはスコアがあります singlesmatchはtennismatchです singlesmatchには2つのプレーヤーが2面あります doublesmatchはtennismatchです doublesmatchには2つのサイドに4人のプレイヤーがいます