Стиль программирования
Под стилем программирования понимают неалгорнтмические вариации в использовании программистами средств алгоритмического языка. В понятие стиля включают использование комментариев, имен переменных, отступов в тексте программы, выбор модулей — т. е. все те особенности, которые совсем или почти совсем не влияют на алгоритм выполнения программы, но в сильной мере определяют, насколько легко разобраться в программе ее автору или постороннему программисту. Среди указанных четырех составляющих стиля программиро-
(а) X : =1827; /-КОММЕНТАРИИ: LVB RIP*/ /*
(б) ПОДПРОГРАММА FACTOR ОТЫСКИВАЕТ ПРОСТЫЕ МНОЖИТЕЛИ ЧИСЛА NUM И ВОЗВРАЩАЕТ ИХ В МАССИВ FACT. ПРИ ВЫЗОВЕ ПОДПРОГРАММЫ FACTOR ПЕРЕМЕННАЯ N ДОЛЖНА СОДЕРЖАТЬ ЗНАЧЕНИЕ ДЛИНЫ МАССИВА FACT. ПРИ ВОЗВРАТЕ УПРАВЛЕНИЯ ЗНАЧЕНИЕ N УСТАНАВЛИВАЕТСЯ РАВНЫМ ЧИСЛУ НАИДЕННЫХ МНОЖИТЕЛЕЙ ИЛИ НУЛЮ В СЛУЧАЕ ОШИБКИ.
*/
SUBROUTINE FACTOR (NUM, FACT, N)
Рнс. 1.1. Примеры комментариев: A — короткий комментарий плохого стиля; б —более длинный комментарий лучшего стиля.
Вания выбор модулей в наименьшей степени изучен, возможно, из-за трудностей исследования больших программных проектов, для которых именно модульность определяет уровень качества программных изделий. Эта область вызывает значительный интерес у исследователей, а некоторые проводимые в настоящее время работы смогут в скором времени восполнить отсутствие конкретных данных [10].
1.2.1. Комментирование
Комментарий в программе — это часть текста, игнорируемая алгоритмическими языковыми средствами. Комментарий может состоять из нескольких слов или многих страниц (рис. 1.1). Комментарии обычно пишут на естественном языке, (напри-
Таблица 1.3. Достоинства и недостатки комментариев, выявленные в экспериментах
_ Литературный
Полученные выводы источник
В задаче «ручной» интерпретации программы результаты были лучше при отсутствии комментариев, а наличие комментариев было полезно лишь тогда, когда они были правильными [57]
В задаче «ручной» интерпретации программы комментарии способствовали быстрейшему завершению работы, но при этом увеличивалось количество ошибок [89J
В задачах модификации программ и восстановления их в памяти программиста одиночные разъясняющие комментарии (высокого уровня) к каждому модулю давали лучший результат, чем множество подробных комментариев (низкого уровня) [71]
Комментарии оказались малополезными при работе с короткими программами [67]
Мер, на русском), но они могут включать также диаграммы или символические коды. Возможность использования комментариев присуща всем алгоритмическим языкам, однако мнения о достоинствах использования комментариев противоречивы, а наилучший способ комментирования является предметом множества дискуссий. Большинство вводных курсов по программированию для начинающих настоятельно рекомендует использовать комментарии, в частности, потому что «комментарии способствуют существенному повышению качества программной документации» [17]. Однако некоторые критики утверждают, что комментарии только нивелируют основной текст программы, мешают при отладке, вводя программиста в заблуждение, и представляют определенную опасность, если их забывают исправлять при внесении изменений в программу. В одной из ранних книг [86] Вайнберг писал: «Кажется, что среди программистов мнения о желательности использования комментариев в программах безнадежно разделились. Некоторые из них рассматривают написание комментариев как занятие, отвлекающее внимание и силы от составления исчерпывающей программной документации. Другие, в равной степени опытные и прилежные программисты, отстаивают подробное комментирование, снабжая иногда каждый оператор программы пространными пояснениями». Рассмотрение вопроса о комментировании программ будет продолжено в гл. 5.
Экспериментальные данные о комментировании разноречивы, однако известно, что лучше иметь плохие комментарии, чем их вообще не иметь. На практике комментарии более полезны в больших программах, чем в малых, и иногда даже
Таблица 1.4. Особенности употребления имен переменны*
_ Литературный
Полученные выводы источник
Іірограммистьі утверждают, что лучше понимают программы С мнемоническими именами переменных, хотя тесты на пони - цание программ этого не подтверждают 189]
Р процессе освоения текста программы немнемонические имена лучше мнемонических, если все онн предварительно определены 1*541 В процессе освоения текста программы мнемонические имена более полезны в сложных программах, чем в простых [54] Мнемонические имена переменных слабо способствуют пониманию коротких программ 167J При освоении текста программ, не снабженных комментариями, мнемонические имена лучше немнемонических [73], с. 70
Считается необходимым составлять их только для больших сегментов кода (не меньших чем подпрограмма или модуль), см. табл. 1.3.