私は最近、いくつかのレガシーコードをリファクタリング開始し、座標グリッドを描画するための2つの機能に出くわしましたが、問題は、これらの機能は、彼らが扱う直交変数にのみその直交変数コードの重複の問題
void DrawScaleX(HDC dc, int step, int x0, int x1, int y0, int y1)
{
for(int x = x0; x < x1; x += step)
{
MoveToEx(dc, x, y0, NULL);
LineTo(dc, x, y1);
}
}
void DrawScaleY(HDC dc, int step, int x0, int x1, int y0, int y1)
{
for(int y = y0; y < y1; y += step)
{
MoveToEx(dc, x0, y, NULL);
LineTo(dc, x1, y);
}
}
のようなものが異なることがあります
アンチエイリアスのような派手なものを追加したり、鉛筆を変えたり、同じコードを両方のコードに入れなければならない場合は、コードの重複があります。
私の質問は、この問題を回避するために、これらの2つの機能を1つに書き直すとどうでしょうか?
+1非常にエレガント –
は<= Y1です。しかし、テンプレートバージョンでは、y0 <= y1であることが検証されます。したがって、アプリケーションが期待どおりに機能しないという問題が発生する可能性があります。 Matejによるソリューションのチェックアウト – Fred