本記事ではGamesOfPlayingCardsのトランプ(PlayingCard)についの話をします。
https://github.com/sh-lab/GamesOfPlayingCards/tree/master/PlayingCards
GamesOfPlayingCardsで扱うトランプのカードは54種類の一意な値を持つバリューオブジェクトとして定義しています。
内訳は
の4×13=52種類に * ジョーカーが二種類(ジョーカー,エクストラジョーカー)
の計54種類としています。
また、ジョーカーとエクストラジョーカーのスートとランクは「None(なし)」として定義しています。
初期の設計ではカードはスートが5パターン(スペード,ハート,ダイアモンド,クローバー,ジョーカー)とランクが15パターン(Ace,2,3,4,5,6,7,8,9,10,Jack,Queen,King,ジョーカー,エクストラジョーカー)から構成する値として定義していました。
Golfを作成していく中でPlayingCardsも迷走していきました。
カードの表と裏も必要だと考えた時に
※適用不能はジョーカー用,不明はカードが裏の時用
と迷走していきました。
迷走していく中でふと気が付きました、「カードの表と裏を決めるのはカードではない」と「カードの表と裏を決めるのはそのゲームをプレイする人」だということでカードの表と裏を扱う部分はバッサリ切り捨てました。
そして、「GameOfPlayingCard」の設計思想でトランプ(PlayingCard)のゲームは「カードの位置をルールに沿って変更するゲーム」と考えた時にトランプ(PlayingCard)は一意な値を持つバリューオブジェクトだと考え今の設計に行き着きました。