Форматирование Введение отступов
Изучая проблемы технического обслуживания и сопровождения программных средств, Овертон и его соавторы пришли к выводу, что для обеспечения высокой эффективности процедур модификации программ программист должен уметь распознавать конструкции, подверженные модификации, и находить внутри них смысловые блоки. Удобным способом выделения таких смысловых единиц программной структуры является применение отступов в тексте. Основное правило состоит здесь В том, чтобы каждый оператор, принадлежащий одной и той же управляющей конструкции, располагался с отступом вправо на одинаковое число пробелов (от двух до четырех). Очевидно, что в данном случае языки, в которых предусмотрено специальное выделение признака конца некоторой языковой конструкции, упрощают указанную задачу, чего не могут обеспечить языки с менее жесткой структуризацией. Это значит, что гораздо легче структурировать программу «а языке Паскаль с его конструкциями типа IF... THEN... ENDIF, чем программу на языке Бейсик с его конструкциями типа IF... GOTO [15].
PROGRAM 01dNew<INPUT. OUTPUT); VAR Old, New: CHAR; BEGIN <01DNew> READ(Old); WHILE Old О '0' DO IF Old = '1' THEN BEGIN New := Old; Old := '0' ELSE Old := New; writelnk Old. і END. <01dNeu> Рис. 5.25. Рекомендуемые стилн применения отступов и заглавных букв [22]. (Перепечатано с разрешения.) |
В настоящее время применение отступов в качестве средства структуризации текста программы считается в кругу специалистов по вычислительным системам стандартным приемом (рис. 5.25). Однако исследования, направленные на изучение степени полезности такой структуризации программ, приводят к противоречивым результатам. В целом ряде экспериментов [17, 26] не удалось выявить никаких существенных различий между структурированными и неструктурированными листингами программ в плане способности программистов воспроизводить короткие программы по памяти. Аналогичные результаты были получены и применительно к процессу отладки программ:
программы со структурированными листингами не отличались по качеству от программ с неструктурированным текстом [35]. Автор еще одного эксперимента [40] пришел к выводу, что применение отступов величиной в два пробела в сочетании со встроенными комментариями только затрудняет умозрительное моделирование работы соответствующей программы. Кролл и Харрис [14] показали, что использование отступов вместе с пустыми строками (вертикальное разделение), приводит к ухудшению обозримости структурированных таким образом программ в сравнении с аналогичными неструктурированными программами на том же языке Кобол, но без пустых строк в тексте.
Интересный эксперимент, подтверждающий полезность применения отступов, проведен в работе [20]. Авторы исследовали четыре уровня структурирования программных текстов: без использования отступов и отступы на два, четыре и шесть пробелов. Экспериментаторы пришли к выводу, что при двух - или четырехпробельных отступах обеспечивается лучшая обозримость программы, чем в случаях шести пробелов или полного их отсутствия. При отсутствии отступов ограничивается различимость управляющих структур программы для пользователя; отступы в шесть пробелов приводят к появлению избыточного свободного пространства в текстах, затрудняющего локализацию управляющих структур, и к излишне частому переносу программных строк. Все это ухудшает наглядность программы и затрудняет ее восприятие. В то же время представляется вероятным, что двух - или четырехпробельные отступы облегчают и то и другое до тех пор, пока не начинают действовать какие - то мешающие факторы, прерывающие процесс визуального восприятия текста программы.
Использование заглавных букв
Еще один полезный принцип форматирования программной документации касается практики использования заглавных букв для написания зарезервированных слов в языках программирования и строчных букв, следующих за первой заглавной, — для всех остальных (рис. 5.25). Этот принцип требует от программиста несколько больших усилий при программировании, тем не менее он рекомендуется ведущими специалистами в области вычислительных систем [22], поскольку позволяет иметь на вооружении еще один метод структурирования текстов программ как на бумаге, так и на экране терминала, а изменение характера шрифта повышает удобство оперативного визуального вое' приятия программ.