Ноя
14th

Что же такое хороший стиль (продолжение)

5. Избегайте волшебных чисел

Числа в программе не стоит использовать в явном виде. Когда в тексте программы встречается явное число (что-нибудь вроде 178), читателю часто бывает совершенно непонятно, что это число означает и откуда оно взялось.

Еще хуже бывает программисту, когда возникает необходимость изменить это число. Представьте себе программу, обрабатывающую массив из 100 элементов. Понятно, что число 100 будет встречаться в этой программе довольно часто. А теперь представьте, что задание изменилось, и надо обрабатывать массив из 200 элементов. Несчастный программист оказывается вынужден заменять по всей программе 100 на 200. Мало того, где то придется заменить 99 на 199, 101 на 201, а где-то окажется, что 100 – это температура кипения воды, а вовсе не количество элементов, заменять эту сотню не надо… В общем, придется выполнять кропотливую и не очень приятную работу.

Избежать это просто. Числам надо давать имена и работать только с именами. В языке программирования Паскаль для этого существует понятие константы. В языках, где механизм констант  не предусмотрен (Бейсик) можно просто завести дополнительную переменную и присвоить ей значение в самом начале программы.

6. Будьте последовательны

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

Это не означает, что надо избегать циклов и ветвлений – без них невозможно построить ни один содержательный алгоритм. Но надо стремиться к тому, чтобы конструкции были короткими, тогда каждая из них может рассматриваться как отдельное действие в общей линейной последовательности.

Обойдемся без GOTO

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

Дело в том, что GOTO нарушает последовательность выполнения, она перестает совпадать с записанной в программе последовательностью операторов, а это всегда делает программу более трудной для понимания.

Так что от GOTO лучше избавиться. Это вполне возможно, существует даже вполне доказанная теорема, что любую программу можно записать, не используя GOTO,  (если, конечно, в языке программирования есть конструкции IF-THEN-ELSE и WHILE). Да и опыт профессиональных программистов говорит о том, что использование GOTO чаще всего оказывается следствием того, что программист просто не умеет грамотно строить структуру программы.

Циклы – не пятилетка, не надо завершать их досрочно

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

Но надо помнить, что все эти средства подобны сильнодействующим лекарствам: они хороши только в малых дозах и только в случае крайней необходимости.

Цикл – самая сложная для понимания алгоритмическая структура, и не стоит без нужды усложнять его. Обычно предполагается, что заголовок цикла полностью описывает условия продолжения и завершения цикла. Если это так, можно не анализировать подробно тело цикла определить соотношения, которые будут выполняться после его завершения.  Досрочное выполнение нарушает это правило, поэтому им лучше не пользоваться.

Программа должна заканчиваться естественно

Не надо вставлять в программу команды, ведущие к завершению работы. Особенно опасно вставлять такие команды в процедуры. Завершение должно быть естественным, вызванная процедура обязана вернуть управление в точку вызова.

7. Используйте логические величины

В некоторых языках есть специальные типы для представления логических величин (boolean в Паскале). Начинающие программисты часто не понимают сути логических величин и используют громоздкие выражения там, где можно выразить то же самое коротко и ясно.

Например, в программе на Паскале часто можно увидеть такое сравнение: If a=true … То же самое можно написать проще: if a then …. Надо понимать, что логическая величина сама по себе есть условие и не нуждается ни в каком дополнительном сравнении.

Еще пример: Конструкция из реальной работы:

if a=true then a:= false else a:=true;

То же самое можно записать так:

a:=not a;

Как говориться, почувствуйте разницу!

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

Например, имя “Можно” или “Существует” намного лучше, чем “Тест” или проверка. В последнем случае нельзя понять, какой результат соответствует логическому “да”.

Конечно, здесь перечислены далеко не все тонкости стиля, на которые следует обращать свое внимание. Но если вы будете следовать хотя бы этим правилам, то очень скоро сами заметите, что на ваши программы стало приятно смотреть, их стало легче читать и понимать. А еще через некоторое время вы сами начнете понимать, как лучше оформить программу, начнете придумывать свои правила, формировать свой собственный стиль.

Успехов вам в этом интересном деле!

До встречи в следующем уроке.

Поделиться с друзьями


Оставить комментарий или два