code retreat の感想のようなもの

12月8日は世界的にライフゲームを書く日だったので 12月8日 Global Day of Coderetreat 2012 in Osaka(大阪府) に参加してきた

内容

ひたすらライフゲームを 45分 × 6回 スクラップ&ビルドする

具体的には

もう少し Ruby でコーディングしたかった。どうも「Rubyやったことないから教えて」というリクエストに応えてあれこれ教えてるうちに終わってしまった。

まあ、私も「Java教えて」とか「C++教えて」と迷惑をかけまくってましたが。

感想

設計を15分くらいして、その後30分くらい実装することを繰り返すことになった。実装の部分のどうこうはさて置き、設計した内容をすぐに実装してみて「テストが書きにくい」とか「なんだか LifeGame クラスが大きくなりすぎる」など、すばやくフィードバックを得られるのが良い。

コードは毎回捨てるルールなので、残すのが設計だけになり必然的に設計を見直すしかない、というルールが非常によくできている。

設計

最終的には

  • Cellクラス : 自分の細胞としての生死を管理する
  • Tableクラス : 縦横の長方形、その各升へのアクセスだけを受け持つ。
  • Gameクラス : ライフゲームのためにテーブルを作ったり、次の世代を計算する

程度に分割すればよいと思った。もちろんもっと良い設計はあるでしょう。
最初は Table クラスと Game クラスが一体になって、格納されるのがCell固定になると各セルへのアクセスに対するテストが書き難くなってた。