テスト駆動でゲーム開発はできるのか?

ゲームの開発にテスト駆動開発を取り入れてみる検証のブログです

密結合になってしまった設計

これから作成したい機能は以下になりますが

  1. キャラクタが持つ自分の衝突範囲を衝突判定処理クラスに登録する(2体分)
  2. 衝突判定処理クラスがキャラクタ同士の衝突を検知したら、衝突したキャラクタに衝突情報を通知する

テストコードを書く前に、シーケンス図も描いて大まかな流れも確認します。

f:id:YoBiya:20140206002036p:plain

これを見るとCharacterが持つCollisionAreaをColisionDitectionに登録するために、CollisionDitectionを知っていなければならない事と
CollisionAreaも衝突をCharacterに通知するために、Characterを知っていなければならず、相互参照の状態になってしまっています。

一度登録するためだけの参照や、相互参照の強い結びつきはテストコードを書くのを難しくしてしまうため、できるだけ粗結合な作りにするのが理想的です。

これを解決するアイディアはあるのですが、この設計を実装した場合よりもコードが複雑になってしまいます。
ですのでYAGNIに従い今はこの設計で実装を行い
必要になったら、疎結合になるようにリファクタリングをする事にします。

次はこの設計のユニットテストを書いていきます。

今回のタグは以下になります。
blog_20140206