回答:
TDDにはいくつかの短期的な利点があり、他のものより測定可能です。ここに私の頭の上からいくつかあります:
古き良きSOLIDの原則に従ったクリーンなコード。つまり、テストをコードと同じくらいクリーンに保ち、ダーティハイブリッドテストコードを回避すると、コードはSOLIDに従う傾向があります。クリーンなコードは読みやすく、コードを最初から保守しやすくなります。メンテナンス時間を節約できますが、短期的には、よりクリーンなコードをすばやく入手できます(バックアップするためのテストがあるため)。
最初から回帰テスト。あなたはそれを壊します… あなたはそれについて知っているでしょう…早く。CIサーバーに支えられて、これはあなたの髪を節約します。テストなしで早期に発見されるリグレッションバグを修正するための工数を測定することは困難ですが、それは多くの工数と言えます。
推測しすぎずにリファクタリングを実行できます。クラスに対してテストスイートを実行した場合、最初からテストを定義しているため、リファクタリング(メソッドの抽出、他のデータ構造の使用、クラスの抽出など)は簡単です。1つのクラスをリファクタリングするのに数日かかるのは1つ未満です。以前からテストを行っていれば、すぐに実行できます。
テスト駆動設計により、コードの重複を早期に修正できます。少なくともあなたがプログラマーであるならば。重複したコード(テストコードと本番コードの両方)でのテストはすぐに退屈な作業になるためです。テストコードを賢く使用すればするほど、より良い結果が得られます。少ないコード、少ない手間、より多くの工数が節約されます。
編集私もたまたま同意するフランク・シアラーによって追加されました:
いつでも作業コードがあります(現在作業しているテストケースを除く)。
TDDを通じてバグや設計の問題を早期に発見することは非常に貴重であり、工数でどれだけ節約できるかを測定することは困難です。ただし、1つの方法は、開発の後半で設計の問題に取り組むために費やした時間を数えることです。ユニットテストを使用すると、実際のアプリケーションやシステムを実行しなくても、テストを通じてコードのサブセットを実行できます。そうすれば、あなたはそれをTDDを介して自分自身を確保することができ、いくつかのパートプログラムのがされて作業右今、それは現時点では本物にフックアップされていない場合でも、。
短期的には、小規模なプロジェクトを意味しますか、それともプロジェクトの初期を意味しますか?
残りのプロジェクト全体の柱を確認できたので、初期の基礎を築きながらテストを統合するとすぐに効果が得られると思います。私は上から下に設計し、下から実装する傾向があるので、これは私の作業方法に意味があります。
不整合を1つでもキャッチできれば、後で複雑なプログラムをデバッグしなくても済むようになり、作業はうまくいきました。
さらに、プロジェクトはすでにテスト用に設定されており、後でリグをリファクタリングする必要はありません。
TDDから得られる非常に短期的なメリットは、達成しようとしていることにそれほど集中する必要がないことです。
TDDを使用せずに作業が中断された場合、タスクに戻ったときに自分がどこにいるかを思い出させるのに数分かかります。
TDDを使用して、テストを実行するだけで、どれが失敗するかを確認し、すぐに自分が何を達成しようとしているかがわかります。私はより少ない脳の痛みでより速く働きます。