緊急システムに関しては、TDDのパフォーマンスが低いことがわかりました。私はビデオゲームの開発者で、最近TDDを使用して、複数の単純な動作を使用してエンティティのリアルな動きを作成するシステムを作成しました。
たとえば、異なるタイプの危険なエリアからあなたを遠ざける責任がある行動と、異なるタイプの興味深いエリアにあなたを移動させる責任がある行動があります。各動作の出力を統合すると、最終的な動きが作成されます。
システムの内臓は簡単に実装され、TDDは各サブシステムが何を担当するかを指定するのに役立ちました。
しかし、振る舞いがどのように相互作用するか、さらに重要なこととして、それらが時間とともにどのように相互作用するかを指定することになると、問題に遭遇しました。多くの場合、正しい答えはありませんでした。最初のテストは合格しましたが、QAはシステムが機能しないエッジケースを見つけ続けることができました。正しい解決策を見つけるには、いくつかの異なる動作を徹底的に繰り返す必要があり、ゲーム内で動作することを確認する前に新しい動作を反映するために毎回テストを更新した場合、何度もテストを破棄することになりました。そこで、それらのテストを削除しました。
私はおそらくQAが発見されたエッジケースをキャプチャし、より強いテストを持っていたはずですが、あなたは多くの物理学とゲームプレイシステムの上に座って、このようなシステムを持って、ときとあなたが時間をかけて行動を扱っている、それは少しになり何が起こっているかを正確に指定するのは悪夢です。
私はほぼ間違いなく自分のアプローチで間違いを犯しました。システムの根性について言ったように、TDDは見事に機能し、いくつかの最適化リファクタリングもサポートしました。