Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.pdf
Скачиваний:
16
Добавлен:
19.04.2024
Размер:
9.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Размещениеm

скобок

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

57Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Мы выбрали один из нескольких популярных стилей. Выберите тот стиль, который вам больше подходит, и точно ему следуйте». (Ker% nighan Ritchie 88)

Стандартность

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

Краткость

Можете ли вы кратко описать свою стратегию отступов? Подумайте над этим. Если вы делаете нечто, пока не произойдет то#то и то# то, а тогда вы будете делать это, если выполняется X; в противном случае вы станете делать нечто другое в зависимости от…

Кому%то может потребоваться дополнить написанный вами код, и де% лать это ему следует, придерживаясь того же стиля. Если его трудно ухватить, можно ли считать такой стиль представления удачным?

Размещение скобок

Для иллюстрации влияния, которое представление оказывает на ис% ходный код, и компромиссов, на которые приходится идти при выборе стиля, разберем конкретный случай, связанный с важной проблемой расположения кода C. Рассматривая варианты, возникающие в этой одной простой области, мы продемонстрируем важность представле% ния и степень его влияния на код.

Размещение фигурных скобок представляет собой большую проблему в некоторых языках, хотя это лишь малая часть всей задачи правиль% ного расположения кода. Поскольку оно сразу бросается в глаза, то вызывает процентов 80 всех споров. В других языках есть свои анало% гичные проблемы размещения.

Существует несколько стандартных стилей размещения скобок. Ваш выбор среди них определяется вашими представлениями о прекрас% ном, о культуре, внутри которой вы пишете код, и имеющимися у вас привычками. Уместность того или иного стиля может определяться контекстом – сравните, например, журнальную статью и редактор ис% ходных текстов (см. врезку «Правильное представление» на стр. 59). Возможно, вы предпочитаете стиль без отступов, но в журнале вы вы% нуждены прибегать к стилю K&R, чтобы максимально использовать площадь страницы.

Скобки в стиле K&R

Стиль K&R относится к старейшим, будучи предложенным основопо% ложниками языка C, Керниганом и Ричи, в книге «Язык программи% рования C» (Kernighan Ritchie 88). По этой причине его часто считают

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

58m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 2. Тонкий расчетClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

исходным и лучшим. На него повлияла необходимость отобразить как можно больше информации на маленьком экране. Пожалуй, это пре% валирующий стиль для кода Java.

int k_and_r() {

int a = 0, b = 0; while (a != 10) {

b++;

a++;

}

return b;

}

За

Занимает мало места, поэтому на экране можно отобразить больше кода.

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

Против

Скобки располагаются не по одной линии, поэтому зрительно тяже% ло обнаружить парные.

Можно не заметить открывающую скобку, вышедшую за правый край страницы.

Операторы кода выглядят слишком тесно упакованными.

Расширенный стиль скобок

Более свободное расположение кода достигается в расширенном (ex# dented) стиле, называемом также стилем Олмана. Лично мне он нра% вится больше прочих.

int exdented()

{

int a = 0, b = 0; while (a != 10)

{

b++;

a++;

}

return b;

}

За

Понятный, упорядоченный формат.

Легко обнаруживаются открывающие скобки, поскольку они рас% полагаются отдельно. В результате каждый блок кода лучше выде%

ляется.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Размещениеm

скобок

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Против

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

59Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Требует больше вертикального пространства.

Расточителен, если многие блоки содержат всего по одному опера% тору.

Некоторых раздражает сходство с Pascal.

Правильное представление

Представление для кода нужно выбирать в зависимости от кон% текста, в котором он будет рассматриваться. Различных контек% стов существует больше, чем может показаться на первый взгляд. Когда вы читаете некий код, полезно определить, чем было обу% словлено выбранное для него представление. Обычно средой оби% тания кода могут быть:

Редактор исходного кода

Это естественная среда обитания почти любого кода. Ей свой% ственны все проблемы представления, автоматически возни% кающие перед программистами. Код должен читаться с экра% на компьютера, обычно в каком%то специальном редакторе или среде разработки. Путем прокрутки или перемещения по файлу нужно найти интересующее место. Среда интерактив% на: как правило, код читают для того, чтобы внести в него из% менения. Таким образом, код должен быть доступен для пере% работки.

Редактор должен предоставлять горизонтальные полосы про% крутки для просмотра длинных строк или переносить строки, если ширина страницы ограничена. Часто для облегчения восприятия синтаксис выделяется цветом. При наборе кода редактор автоматически выполняет некоторые виды форма% тирования. Например, пытается правильно установить кур% сор при переходе на новую строку.

Публикуемый код

Если только вы не живете в каком%то замкнутом пространст% ве, огороженном от остального мира, то должны периодиче% ски читать опубликованный код. Существует множество ис% точников: листинги в книгах или журналах, фрагменты кода в библиотечной документации или строки кода в сообщениях телеконференций. Их формат нацелен как на облегчение по% нимания, так и на экономию занимаемого места, которое сто% ит денег. Поэтому строки сжаты по вертикали, чтобы вме% стить больше кода в ограниченное пространство, и сжаты по горизонтали, чтобы уместиться на узких страницах.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

60m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 2. Тонкий расчетClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

В таком коде часто опускают обработку ошибок и все, что не относится к главной идее приводимого примера. Нужно пере% дать смысл, не вникая в детали.

Возможно, вам никогда не придется писать код для такого ро% да применений, но вы, несомненно, будете часто встречаться с ним (хотя бы читая фрагменты кода в этой книге). Следует учитывать, для каких условий пишется такой код и чем он отличается от обычного, чтобы не перенять ненароком дур% ной стиль.

Распечатки

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

Даже если вам не требуется распечатывать исходный код, всегда следует иметь в виду эти проблемы.

Стиль Уайтсмита (с отступами)

Стиль с отступами менее распространен, хотя и встречается. Фигур% ные скобки при этом имеют тот же отступ, что и код. Он получил на% звание стиля Уайтсмита, поскольку применялся в примерах для Whitesmiths C – раннего компилятора с языка С.

int indented()

{

int a = 0, b = 0; while (a != 10)

{

b++;

a++;

}

return b;

}

За

Соединяет блоки кода со скобками, в которые они заключены.

Против

Многим не нравится привязка блоков к своим скобкам.