![]() |
![]() |
|
||
![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||
| [11 ноября 2001 г.] |
|
По многочисленным пожеланиям читателей, начиная со следующей недели наша газета будет выходить без текста и в рулонах. «Дорогая редакция» |
Недавно я слышал мнение о том, что
Все дело в том, какой «дизайн» здесь имеется в виду. В первой набле имелся в виду Web-дизайн, и только |
В этой и нескольких следующих наблах мы поговорим (правда, говорить будет только автор этой наблы, обратная связь пока что не предусмотрена) о том самом «дизайне в программировании». А
Возможно, вы будете утверждать, что «овчинка выделенки не стоит». Возможно, тут вы окажетесь правы. Возможно, и существуют очень хорошие программы, написанные программистами, не придерживающимися вообще никакого стиля программирования ( |
Прежде всего, приведу одну интересную систему уравнений, из которой можно приблизительно определить, какой стиль лучше использовать при написании исходных кодов программ. Вот она:

Особенно важно первое уравнение: оно показывает, что, вернувшись после месячного отпуска, вы можете и не поверить, что сами писали ту или иную программу. Даже если над программой работает один-единственный человек, все равно нужно придерживаться определенных правил, чтобы программа оставалась ясной для всех (это следует уже из второго уравнения).
Я не принуждаю вас использовать тот или иной устоявшийся стиль оформления исходников. Моя |
Начнем с вопроса о табуляции и логическом выделении блоков. Наверное, все согласятся с тем фактом, что делать отступы в программах нужно. Для этого подойдут любые пробельные символы.
Так называют совокупность символов табуляции, пробелов, перевода строки и т. д. то есть, все «невидимые» символы. |
Для выравнивания часто используют клавишу Tab. И вот, один из самых распространенных недостатков того или иного
Возможно, вы сами никогда не используете табуляторы, а выравниваете свои программы при помощи одного лишь пробела. Что ж, этот способ также имеет преимущества, так как лишен всех подводных камней, которые описываются ниже. И все же большинство программистов используют клавишу Tab, а не пробел. Почему? Да потому, что табулятор наглядно показывает: этот отступ отражает логический уровень вложенности блока. Он сокращает объем исходного текста программы. Кроме того, используя пробелы, очень легко в одном месте использовать для отступа, скажем, 2 пробела, а в
Символ табуляции выглядит в текстовых редакторах как несколько пробелов, число которых ровно такое, чтобы следующий символ находился в позиции, кратной некоторому числу N (отсчет позиции ведется с 0). Это число N назвается размером, или шириной, табуляции. Например, если строка состоит из 2 символов: "»а" (как "»" я здесь и далее обозначаю символ табуляции, который в оригинале невидим), и N=4, то на экране эта строка будет выглядеть так: "····a" (пробел обозначается как "·"). |
Разные программисты предпочитают устанавливать различный размер табуляции. Обычно он колеблется от 3 до 8 символов. Если знаки табуляции проставлены правильно, то открытие исходника в редакторе, настроенном на другую ширину табуляции, никак не сказывается на его читабельности. В противном случае... А давайте посмотрим на примере. Вот выдержка из http_main.c (одного из исходных файлов сервера Apache) при ширине табуляции, равной 8 символов.
Я немножко обрезал картинку по правому краю, чтобы она помещалась на эту страницу. Кстати, одним из самых удобных редакторов для работы с программами на Perl и PHP является EditPlus (если вы не буржуй, сходите также сюда, чтобы программа работала у вас вечно, а не один лишь месяц). Все приведенные в этой набле «снимки» сделаны именно из этого редактора. |
Наверное, разработчики Apache очень горды собой: они одни из тех, кто до сих пор использует 8-символьную табуляцию. Теперь давайте поставим размер «табов» равным 4 символам (как будет видно далее, это самая удобная цифра) и посмотрим, что получится:
Видите, все поехало. Почему так произошло? Да потому, что разработчики нарушили здесь
первое правило расстановки табуляции: если следующая строка является вложением по сравнению с предыдущей (как строка 3 по отношению к строке 2 в примере), то ее «пробельный префикс» (все пробельные символы до первой буквы или цифры) обязательно должен начинаться с пробельного префикса предыдущей строки.
Как видим, в этом исходнике правило нарушено: строка 2 начинается с четырех пробелов, а строка
Теперь увеличим ширину табуляции до 8 символов:
Как видите, хотя длина отступа и увеличилась до безобразия, текст программы не поехал.
Теперь давайте рассмотрим еще один пример неправильного использования табуляторов. Вот он:
На первый взгляд, все в порядке. Однако это только на первый: попробуем увеличить размер табуляции до 5 символов.
Почему не до 8, как в прошлый раз? Только потому, что тогда рисунок не поместится на этой странице (особенно у людей, которые смотрят ее при низком разрешении экрана). |
Опять у нас все разъехалось. Это потому, что нарушено
второе правило расстановки табуляции: никогда не использовать табуляторы вне пробельных префиксов
Чтобы текст удовлетворял второму правилу, мы должны отказаться от выравнивания стрелочек и комментариев с помощью табулятора, а делать это пробелами, вот так:
Далее приведены некоторые знаменитые программы, использование табуляторов в которых оставляет желать лучшего.
Вот, пожалуй, и все, что можно сказать про символы табуляции. Грамотное их применение поможет вам придерживаться единого стиля при оформлении всех программ, а также избавит от головной боли людей (в том числе, и вас лично), которые в будущем решат «влезть» в программу.
![]() |
| ||||||||||||||||||||||||
| Дмитрий Котеров | 11 ноября 2001 г. ©1999-2010 | | Контакт | Вернуться к оглавлению |