Иллюстрированный самоучитель по практике программирования

Стилевое единство и идиомы

Все три способа, в принципе, правильны, однако устоявшаяся, идиоматическая форма выглядит так:

for (1 = 0; i < n; i++)
array[i] = 1.0;

Выбор именно этой формы не случаен. При такой записи обходятся все п элементов массива, пронумерованные от 0 до n-1. Все управление циклом находится непосредственно в его заголовке; обход происходит в возрастающем порядке; для обновления переменной счетчика цикла используется типичная операция инкремента (++). После выхода индекс цикла имеет известное нам значение как раз за последним элементом массива. Те, для кого этот язык как родной, все понимают без пояснений и воспроизводят конструкцию не задумываясь.

В C++ и Java стандартный вариант включает еще и объявление переменной цикла:

for (int 1=0; i < n; i++)
array[i] = 1.0;

Вот как выглядит стандартный цикл для обхода списка в С:

for (р = list; р!= NULL; р = p › next)
…….

И опять все управляющие элементы цикла находятся непосредственно в выражении for.

Для бесконечного цикла мы предпочитаем конструкцию:

for (;;)

Однако популярна и конструкция:

while (1)
……..

Не используйте других форм, кроме двух приведенных.

Использование отступов также должно быть стандартным, можно сказать – идиоматичным. Вот такое необычное вертикальное расположение управляющих элементов цикла ухудшает читабельность кода, поскольку выглядит как три отдельных выражения, а не как единый заголовок цикла:

Иллюстрированный самоучитель по практике программирования › Стиль › Стилевое единство и идиомы

Стандартную форму записи цикла воспринять гораздо проще:

for (ар = агг; ар < агг+128; ар++)
*ар = 0;

Небрежно выбранное расположение отступов растянет код на несколько экранов или страниц, что также не улучшает его восприятие.

Еще один стандартный прием – вставлять присваивание внутрь условия цикла:

while ((с = getchar())!= EOF)
putchar(c);
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.