Ясность программирования

Задача программиста должна состоять в том, чтобы писать на исход­ном языке программы, предназначенные для аудитории, состоящей в пер­вую очередь из людей, а не машин. Эта задача требует уделить больше внимания ясности, простоте и доступности текста за счет игнорирования менее важных критериев, например краткости (число ударов по клавишам, необходимых для того, чтобы напечатать программу) или машинной эф­фективности. Выполнение следующих правил помогает писать ясные про­граммы [1].

Используйте осмысленные имена. Это правило выражает самый важный принцип стиля программирования. Ничего нет хуже программы с именами XX, XXX, ХХХХ, XY, ЕКК, ЕККК, А и AI, заполненной коммен­тариями, разъясняющими смысл и назначение этих имен. Простой прием – использование более длинных содержательных имен – значительно облег­чает чтение программы и сводит к минимуму количество необходимых комментариев. Как правило, имена переменных должны содержать от 4 до 12 символов. Слишком длинные имена, типа ЧИСЛО _ ТРАНФОРМАЦИЙ _ НА _ СООБЩЕНИЕ, нежелательны, потому что они отвлекают внимание от собственно программы и сами подвержены ошибкам.

Длина используемых имен зависит от ограничений языка програм­мирования. Фортран существенно ограничивал длину имен (не более 6 символов). В большинстве реализаций PL/1 были разрешены идентифика­торы длиной до 31 символа, но имена процедур ограничива­лись семью символами – серьезное ограничение, если пытаться давать процедурам ос­мысленные имена. В современных языках этот недостаток был устранен.

Избегайте сходных имен. Иногда встречаются программы, в которых используются такие имена переменных, как VALUE и VALUES, или ряд переменных с именами BRACA, BRACB, BRACC и BRACD. Это услож­няет чтение программы. Выбирая осмысленные имена, старайтесь, чтобы они были как можно менее похожи.

Если в идентификаторах используются цифры, помещайте их только в конце. Цифры 0, 1, 2 и 5 легко спутать с буквами О, I, Z и S. Если уж цифры в именах переменных необходимы, помещайте их в конце.

Никогда не используйте в качестве идентификаторов ключевые слова.

В следующем примере на языке Cи++

int max(int x, int y)

{

if (x > y)

return x;

else

return y;

}

max, x и y – имена или идентификаторы. Слова int, if, return и else – ключевые слова, они не могут быть именами переменных или функций и используются для других целей.

Избегайте промежуточных переменных. Хотя в большинстве про­грамм некоторое количество промежуточных переменных необходимо, никогда не создавайте лишних. Промежуточные переменные есть смысл использовать тогда, когда применяемая формула является слишком длин­ной или сложной, и разбиение ее на логически осмысленные части позво­лит сделать программу более удобочитаемой и, следовательно, сведет к минимуму риск ввести формулу с ошибкой.

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

Будьте внимательны, используя константы как аргументы.

Рассмотрим пример на С++:

int simple_function(const int&, int);

int simple_function(const int& a, int b);

{

a = 1;//Компилятор выдаст ошибку! Нельзя изменять переменную a

return 0;

}

Располагайте только один оператор на строке. Размещение не­скольких операторов на одной физической строке противоречит правилу структурированного программирования, требующему сдвигать оператор по строке в соответствии с уровнем его вложенности. Однако в языке Си возможны такие записи:

a = b = c = d;

(присвоение нескольким переменным одного и того же значения).

x = 2 * (a = 3 + b);

(выполнение присваивания в арифметическом выражении).

Логически они являются верными, но если первое выражение можно оставить, как логически понятное, то второе лучше записать в виде:

a = 3 + b

x = 2 * а;

Нe изменяйте значение параметра цикла в теле цикла. Изменение параметра цикла внутри цикла усложняет и понимание цикла, и доказа­тельство того, что он не является «бесконечным».

Наши рекомендации