2017-02-23 6 views
1

背景:私は、現在の目的を学習するための私の最初のゲームエンジンのプロジェクトを作成していTDDを使用しようとすると、ドメインに不慣れで、あなたのプログラミング

。これは私がこれまでにやった最初の大きなプロジェクトです。私は、ゲームエンジンに関わるもの(入力、グラフィック、オーディオ、物理などの別々のシステムなど)のより高いレベルの詳細をプロジェクトに入れていたことを知っていましたが、私が行くように。私の符号化処理は、今のようになります。

1))私は

2を設計するシステムのいくつかの簡単な、より高いレベルの詳細を把握物事が作業する必要があるかを正確に確認するためにいくつかの実験的なコーディングを開始します

3)後でテストを追加したら、私は自分が持っているものについて良い気分になります。

私は問題ドメイン(ゲームエンジンプログラミング)にはほとんど慣れていないので、私が実際に必要とする機能とデザインスイートが何であるかを知るためには、コードを実験する必要があります。しかし、私はコミュニティーの大部分を知っているので(とにかくそう思われます)、通常、アプリケーションを構築するためのTDDアプローチのほうがより多くのことを提唱しています。私はこれの利点を見ることができますが、実際にどの機能を実際にテストする必要があるかを実際にはわからないときに、「書き込みテストを最初に実行する、失敗する、 1つまたは2つの明確な関数を考えることができますが、実験段階では、それらの関数を別のクラスにまたがるより多くの関数に分割する方が良いでしょう。それでは、コードとテストの両方を常に再設計しなければならないでしょう。

私の問題/質問(秒):

だから、あなたは、コード内で実験TDDのアプローチを使用してについて移動する良い方法はありますか?あるいは、TDDは一般的に、彼らが取り組んでいるプロジェクトに精通し、設計が必要とするものや、テストするために必要な機能を知っている人たちのためのものですか?

答えて

1

共通のアプローチ未知の領域にTDDを使用して:

  • は、実験的なコードを脇に設定し、あなたが書いたようTDD「テスト第一」のアプローチ
  • を開始
  • より多くを学ぶために、いくつかの実験的なコーディングを行いますあなたのテストを合格させるためのプロダクションコードは、あなたの実験コードの断片を収穫します。

TDDの「赤、緑、リファクタ」サイクルでは、通常、実験コードのデザインが改善されます。それがなければ、あなたの実験コードはしばしば「大きな泥のボール」になることがあります。

+0

私はこの考えが好きです。シンプルですが、効果があるようです。ワークフローの流れを見てみる必要があります。 – Jason

0

私は「私はこの状況で単体テストを書くのが快適ではない」と言いましたが、単体テストを書いていないという言い訳にはなりません。

コードの動作について十分な知識がある場合は、それをテストするのに十分な知識があります。私はそれがすでに場合は、異なるクラス間でより多くの機能に

を をそれらの機能を分割する方が良いでしょう見つける 実験段階の間にどのような場合は、1つのまたは2明確な機能と考えることができたとしても

元の関数をテストしておき、インタフェースを変更するだけであれば、変更する必要のあるテストロジックはほとんどありません。後でインターフェースを変更するときに何かを壊す危険はありません。さらに、この問題は、新しいドメインを試すことに固有の問題ではありません。

おそらく、馴染みのないドメインは、TDDの学習を開始するのに最適な場所ではありません。しかし、私は確かにそれが本質的にプロセスには適していないとは言いません。

関連する問題