0

私は2つのクラスを持っていParserますItem. Parser クラスは、構造化されたドキュメントを解析し、 のItemようなものを呼び出すと -objectsを返しますParser::GetItem(int some_id)。Item クラスは、"Tell - don't ask" の原則を念頭に置いて作成されました。Parserつまり、 on 構築によって埋められたいくつかの内部変数の getter メソッドがないということです。

Parser問題は次のとおりです。クラスをユニットテストするにはどうすればよいですか? Item内部変数が正しく解析されたかどうかを確認する方法は? クラスを再編成する必要がありますか? Itemパーサー インターフェイスが完全に構築されたオブジェクトを返すのは設計が悪いのでしょうか?

4

1 に答える 1

1

あなたの設計は理想的ではないかもしれませんが、コードを見ずに知ることは困難です。

自問すべきことは、パーサーがあまりにも多くの情報を隠し、その結果としてやりすぎていることです。

Michael Feather によるこのプレゼンテーションを視聴することを強くお勧めします。このプレゼンテーションでは、(興味深いことに) テストを使用してパーサーの設計を改善する方法について説明しています。彼が解決する問題は、あなたが解決しようとしている問題と似ているようです。Michael Feathers - テスト容易性と優れた設計の間の深い相乗効果

于 2013-07-11T11:08:16.520 に答える