最近、いくつかのレガシー コードのリファクタリングを開始し、座標グリッドを描画するための 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 つの関数にどのように書き直しますか?