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