TDDBC for C++のお題で素振り(その1)

TDD Boot Camp 東京 for C++ 課題

これの素振りのために作ったらしい、お題1〜3までの落書きを退避メモ。
実装はまた今度。

お題1

  1. 【情報】駅間のつながりはEdgeで表されている
  2. 【情報】双方向につながっているEdgeらしい
  3. 【疑問】駅は名前のみ与えられている?
  4. 【疑問】双方向につながっていることをどう表現する?
  5. 【案】現状は駅名のみ与えられているようなので、駅は文字列で表現(3.疑問より)
    • データが増えた場合、オブジェクトへの変更を検討
  6. 【案】当該駅とEdgeでつながっている一つ隣り駅を保持するEdgeで当該駅から隣り駅へ行けることを表現する。逆向きにいけるかどうかは保証しない(4.疑問および5.案より)
    • つまり、当該駅と隣り駅に関する単方向Edgeを、関係を逆にして2つ用意することで双方向に移動可能なことを表現する
  7. 【情報】Edgeが存在しない駅間がある
  8. 【案】Edgeが存在しないことをEmptyと表現したほうがよさそう(6.情報より)
  9. 【情報】Edgeは複数存在する
  10. 【案】Edgeを記録しているコンテナが必要(9.情報より)
  11. 【案】駅がつながっているか調べるには駅名とEdgeデータ群を利用すればいい気がする

お題2〜3

  1. 【情報】出発駅〜目的駅間には途中駅が存在するかもしれない
  2. 【情報】先ほどデータ構造Edgeを駅と駅を持つオブジェクトもしくはEmptyなと定義した
  3. 【疑問】Edgeが存在する場合のデータ構造を変更するべきか?
  4. 【案】当該駅とつながっている駅リストを保持するEdgeにする(3.疑問より)
  5. 【案】データ構造はそのままにフィルターかけて再帰で検索する(3.疑問より)
  6. 【疑問】探索済駅と未探索駅をどう区別する?
  7. 【案】済リストと未探索リストを用意する(6.疑問より)
  8. 【案】Edgeリストに探索済フラグを付与する(6.疑問より)
  9. 【案】プロトタイプ関数を作成して、どの方針が良さそうか試してみる(7,8.案より)
    • 内部ロジックの問題なのであとでどうにかなるはず

ざっくばらんに書き殴っている。なお、これはTODOではないのであしからず。