Re[4]: Комментарии к коду
От: Sashaka Россия  
Дата: 11.04.11 13:51
Оценка:
Здравствуйте, LaptevVV, Вы писали:

Это жесть а не код
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
Re: Комментарии к коду
От: x64 Россия  
Дата: 11.04.11 15:51
Оценка:
_>1) Комментируем все, что можно

Стараюсь придерживаться именно этого подхода. Тем более, что пишу, помимо прочего, инструменты для разработчиков и там без комментов туго.
Re[3]: Комментарии к коду
От: Abyx Россия  
Дата: 11.04.11 15:59
Оценка:
Здравствуйте, BSDыщъх, Вы писали:

BSD>Здравствуйте, Abyx, Вы писали:


BSD>По имени функции adjustЧтоТоТам не понятно, модифицирует она это ЧтоТо или только вычисляет подходящий размер. Чтобы это понять нужно погрузиться в реализацию.

достаточно навести на нее курсор и увидеть сигнатуру — там нет out-параметров
что характерно, чтобы увидеть комментарий надо сделать тоже самое

BSD>Но проблема в том что у автора кода и у модификатора никогда не будет на 100% совпадающего словаря. Что для одного кажется очевидным наименованием, для другого непонятным. То же и про багаж знаний. Любой специалист может не знать какой-нибудь модной мелочи, которая автору кажется очевидной.

BSD>Или имя выбрано вроде бы удачно, но может вдруг вызвать аллюзию к другой предметной области.
После некоторого времени можно понять какой именно словарь используется в коде. Тогда будет понятно, что theta это угол а не, скажем, температура.
Вместо того чтобы расписывать словарь в коде, лучше сделать отдельную документацию (wiki например).
In Zen We Trust
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.