4

たとえば、スニペット A

String readSource(String file);

スニペット B

String readSource(InputStream in);

したがって、インターフェイスを A として定義すると、テスト用のファイルしか作成できません。しかし、時間が経つとテストファイルの管理がかなり難しくなります。したがって、B インターフェイスを使用すると、テストが容易になります。偽物を作成してInputStream、メソッドが必要な結果を返すかどうかを確認するだけです。ただし、IOException毎回このメソッドを呼び出す前に、を処理する必要があります。

4

2 に答える 2

1

次の TDD の場合は、よりテスト可能なアプローチを採用すると思いますが、それは実際には個人的な好みの問題です。簡単に考えてみると...スニペットBを使用する場合、コードは使いやすく、維持しやすいですか? もしそうなら、欠点はなく、間違いなく進むべき道です。

于 2012-12-19T14:20:58.413 に答える
1

readSource()ファイルの内容を返すだけでなく、より複雑なことを行う場合は、間違いなく解決策 B を選択します。

テスト容易性の向上に加えて、新しい抽象概念 ( InputStream) の導入により、責任を明確に分離できます。1 つのオブジェクトで適切なファイルを開き、その内容をメモリに格納し、1 つのオブジェクトでストリームからソースを読み取り、必要なものをすべて返すことができます。それから(単一責任の原則)。

于 2012-12-27T14:42:36.650 に答える