我最近开始重构一些遗留代码并遇到了两个用于绘制坐标网格的函数,问题是这些函数仅在它们处理的正交变量上有所不同,就像这样
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);
}
}
因此,如果我决定添加一些花哨的东西,例如抗锯齿或仅仅更改绘图铅笔或其他任何东西,我将不得不在它们两者中放入相同的代码,这是代码重复,这很糟糕,我们都知道为什么。
我的问题是如何将这两个函数重写为一个函数以避免这个问题?