これは著者がやろうとしていることだと思います。
私のコードサンプルでは、出力ウィンドウに開始時間と停止時間を加えたタイミングウィンドウがあります。その目的は、24時間の期間にわたって出力ウィンドウを描画することです。開始時刻が停止時刻よりも大きい場合、しわが追加されます。これは、真夜中のタイミングウィンドウであるためです。
プライベート変数を公開せずにオブジェクトを完全に実行する単体テストを作成できます。これらのプライベートブールとタイムスパンは、ユニットテストのために内部を公開するときに彼が参照している共同作業者です。本によると、それらは共同作業者なので、これらの内部を公開することはコードの匂いではありません。
double outputを公開することは、コラボレーターではないため、コードのにおいにGetOutputなります。これは、返すべきものを決定するための条件付きロジックを含む、クラス自体によって明示的に隠されている要素です。
ブール値/タイムスパンを掘り下げると、単体テストがより包括的になります。彼はこれが良いと言います。
ダブルoutputを掘り下げるには、ユニットテストで何GetOutputが行われているかを反映する追加のロジックが必要です。これは彼が言及しているコードのにおいでしょう。
パブリッククラスTimeWindow
{
プライベートbool isConst;
プライベートbool spansMidnight;
プライベートTimeSpan start1;
プライベートTimeSpan stop1;
プライベートTimeSpan start2;
プライベートTimeSpanストップ2;
プライベートダブル出力。
public TimeWindow(double out、TimeSpan start、TimeSpan stop)
{
出力=出力;
if(start == stop)
isConst = true;
else if(start> stop)
{
spansMidnight = true;
start1 =真夜中;
stop1 =停止。
start2 =開始;
stop2 =真夜中;
}
そうしないと
{
start1 =開始;
stop1 =停止。
}
}
public double GetOutput(TimeSpan time)
{
//何をどのように返すかに関するロジック
...
出力を返す;
}
}