暗黙のタイピングやTDD
-
22-09-2019 - |
質問
んこ ポスト での暗黙のタイピングが出テスト駆動開発/デザイン。
メールアドレスを入力し"とTDDできる"鈍化したものをお使いの場合は黙示的にタイピングのための戻り値の型がユニットテストメソッドになっています。また、その戻り値の型で指定された試験のための駆動開発を意味します。
指定ユニットテストの暗黙のタイピングこのような
public void Test_SomeMethod()
{
MyClass myClass = new MyClass();
var result = myClass.MethodUnderTest();
Assert.AreEqual(someCondition, result);
}
その後、私の質問:
利用には暗黙の入力過書単位試験のためのテスト駆動開発?でもあり、自分の経験をこの技術を書くときのユニットテスト?
私はこのすぐだからって行われませんTDDと知りたい場合があり方を書く一般には半汎用ユニットテストをうな戻り値の型を変更する場合がございます。
解決
私はその点がんでは、正当な理由のない利用 var
こちらです。このTDDの作品約に従って以下の
- の書きます。
- 場合の試験に失敗したコンパイル(すず!), 書くのに十分なコードまでの試験栽.
- 走っている。
- ばテストは失敗し、十分なコードですべての試験にパスした。
- Refactor.
かどうかを使用していま var
この試験に失敗しまるコンパイルどちらかの方法で試験しなが存在してない!.一度開始いたしま符号化まで NewMethod
hisポイントは議論の余地がある問題.
むしろ、正当な理由のない利用 var
こちらではのコードを示すかの種類 result
です。この問題に関する意見が var
あこちら
var dict = new Dictionary<Foo, List<Bar>>();
やのための匿名の種類はこちら
var m = M();
なので全く不明でなく、宣言 M
(または利用を行頭に付けた)の戻り値の型 M
です。
他のヒント
のはいとはありませんの
Visual Studioでは、現在、TDDは、暗黙的にタイピングを使用する場合は特に、痛みのビットです。あなたが存在しない可能性がありタイプの名前を入力し、まだそれがオートコンプリートあなたが入力しているものに似ている何か、テスト・フィクスチャの多くの場合、名前での傾向を持っているときvar
はその後、何のインテリセンスがないことを意味します。
のVisual Studio 2010には、が第1のモードを消費しています>、どのテスト駆動開発のために、それは理想的な、より良いことができます。現在、あなたは非表示インテリセンスにエスケープをヒットする必要があります。
(2008年およびそれ以前に)見つけることができます var
の使用については、それは純粋にsynatic砂糖です。それは私の意見では、以下の非常に良くになります:
var type = new MyType();
その明確なその変数の型は、型がMyTypeです。 var
は、ジェネリック医薬品のために素晴らしいですし、DRYのprinicpleを次の - 。のの自分を繰り返さないでください。
var type = MethodCall();
var result = ReturnResult();
あなたはTDDに従うかどうか、コードを読みにくいため、一方、このことができます。良いユニットテストが流れ、読みやすいはずです。あなたが考える、または戻り値の型を参照する方法の上にマウスを移動する必要がある場合は、それが悪いの符号がテストを読み取るために、難しいです。
ツーリング観点から、私はそれがVARを避けるために、よりよいかなと思います。私は、EclipseとJavaを使用していますが、私はのCodeRushとResharperのような機能拡張は、私がここで議論してるという機能の多くを提供していることを知っています。私のテストでは、私はまだ存在しないメソッドを呼び出すと、私は「クイックフィックスは、」それが目的のクラスのメソッドを作成することができます。自動的に作成されたメソッドの戻り値の型は、その文脈に依存します。私は戻って文字列を期待していた場合、メソッドの戻り値の型は文字列になります。しかし、割り当てが(Javaが持っていない - しかし、それがなかった場合)、VARにある場合、IDEは、戻り値の型VAR以外のもの(または多分Object)を作るのに十分知ることはできません。
誰もがTDDで、このようにIDEを使用していますが、私はそれが非常に有用見つけます。私は私のテストでIDEを与えることができるより多くの情報が、あまり私がテストパスを作るために行う必要があります入力します。