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

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

Чем логичнее и последовательнее оформлена программа, тем она лучше. Если форматирование кода меняется непредсказуемым образом: цикл просматривает массив то по возрастанию, то по убыванию, строки копируются то с помощью strcpy, то с помощью цикла for – все перечисленные вариации сбивают читателя с толку, и ему трудно понять, что в действительности происходит. Но если одни и те же вычисления всегда выполняются одинаково, то каждое отклонение от обычного стиля будет указывать на действительное различие, заслуживающее быть отмеченным.

Будьте последовательны в применении отступов и фигурных скобок.
Отступы помогают воспринять структуру кода, но какой стиль расположения лучше? Следует располагать открывающую фигурную скобку на той же строке, что if, или на следующей? Программисты ведут нескончаемые споры о наилучшем расположении текста кода, однако выбор конкретного стиля гораздо менее важен, чем логичность и последовательность его применения во всем приложении. Выберите себе раз и навсегда один стиль – лучше всего, конечно, наш – и используйте его всегда, не тратьте времени на споры.

Стоит ли вставлять фигурные скобки, когда необходимости в них нет? Как и обычные скобки, дополнительные фигурные скобки могут разрешить неясные моменты и облегчить понимание структуры кода. Многие опытные программисты во имя все того же постоянства всегда заключают в фигурные скобки тела циклов и условных операторов. Однако если тело состоит лишь из одной строки, то скобки явно не нужны, и мы бы посоветовали их опустить. Впрочем, не забудьте вставить их в тех случаях, когда они помогут разрешить неясности с "висящим else", – подобная неопределенность хорошо иллюстрируется следующим примером:

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

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

if (day > 29)

И весь код работает неверно. Когда один if следует сразу за другим всегда используйте фигурные скобки:

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

Код все еще неверен: 2000 год является високосным, а 1900-й и 2100-й – не високосные. Тем не менее такая структура уже значительно проще доводится до безупречной.

Кстати, если вы работаете над программой, которую писал кто-то другой, сохраняйте ее оригинальный стиль. При внесении изменений не применяйте свой стиль, даже если он вам больше нравится. Постоянство в форматировании программы гораздо важнее, чем ваше собственное, поскольку только оно сможет облегчить жизнь тем, кому придется вникать в способы функционирования этой программы.

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

Одной из наиболее типичных идиом является форма написания цикла. Рассмотрим код на С, C++ или Java для просмотра n элементов массива, например для их инициализации. Можно написать этот код так:

? 1 = 0;
? while (1 <= n-1)
? array[i++] =1.0;

Или так:

? for (1=0; 1 < n;)
? аrrау[1++] = 1.0;

Или даже так:

for (i = n; – 1 >~ 0;)
array[i] = 1.0;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.