Здравствуйте, alexey_sz, Вы писали:
_>2) Пишем код так, чтобы комментарии были не нужны . Ну или самый необходимый минимум
только так и никак иначе
ниже приведен код с комментариями.
я считаю что он читается достаточно нормально и без комментариев, однако на всякий случай там есть комментарий для объяснения потенциально сложной идиомы
(код плохой изза опасной копипасты, но мы счя не об этом)
int adjustSideLength(int unadjusted, int sizeNonCl, int minSize, int maxSize)
{
auto viewport = unadjusted - sizeNonCl;
viewport = max(viewport, minSize);
viewport = (viewport + 3) & ~3; // align to 4
auto total = viewport + sizeNonCl;
return min(total, maxSize);
}
SIZE nonClientSize(long style, bool hasMenu)
{
SIZE size = {0, 0};
if((style & WS_BORDER) != 0)
{
size.cx += GetSystemMetrics(SM_CXFRAME) * 2;
size.cy += GetSystemMetrics(SM_CYFRAME) * 2;
}
if((style & WS_CAPTION) == WS_CAPTION)
size.cy += GetSystemMetrics(SM_CYCAPTION);
if(hasMenu)
size.cy += GetSystemMetrics(SM_CYMENU);
return size;
}
SIZE adjustWindowSize(SIZE unadjusted, long style, bool hasMenu)
{
auto nonClient = nonClientSize(style, hasMenu);
auto resolution = get_UO_resolution();
SIZE adjustedSize;
adjustedSize.cx = adjustSideLength(unadjusted.cx, nonClient.cx, resolution.cx, GetSystemMetrics(SM_CXSCREEN));
adjustedSize.cy = adjustSideLength(unadjusted.cy, nonClient.cy, resolution.cy, GetSystemMetrics(SM_CYSCREEN));
return adjustedSize;
}