Re[2]: Комментарии к коду
От: BSDыщъх  
Дата: 11.04.11 15:27
Оценка:
Здравствуйте, 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% совпадающего словаря. Что для одного кажется очевидным наименованием, для другого непонятным. То же и про багаж знаний. Любой специалист может не знать какой-нибудь модной мелочи, которая автору кажется очевидной.

Или имя выбрано вроде бы удачно, но может вдруг вызвать аллюзию к другой предметной области.

Это я к тому, что совсем без комментариев это плохой код.
Sine vilitate, sine malitiosa mente
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.