Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.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

 

 

 

 

 

61Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Существуют и другие стили. Например, стиль GNU занимает промежу% точное положение между расширенным стилем и стилем с отступами: скобки располагаются посередине каждого уровня отступа. Есть и гиб% ридные стили: стиль кода ядра Linux наполовину представляет K&R, наполовину – стиль Олмана. Большинство программирующих на C# тоже комбинирует стили расположения. Можно извратиться и так:

int my_worst_nightmare()

{

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

 

 

 

62m

 

 

 

 

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

 

 

 

 

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

Однако это не довод в пользу программирования в своем особом лич% ном стиле. Помните, что правильное представление должно быть обыч# ным – таким, к которому привык читатель.

Стандарты кодирования

Существует ряд известных стандартов кодирования, используе% мых повсеместно.

Indian Hill

Полное название этого знаменитого документа – Indian Hill Recommended C Style and Coding Standards. Он не имеет ника% кого отношения к коренным жителям Америки, гордо стоя% щим на холмах; название происходит от прославленной лабо% ратории Indian Hill AT&T Bell.

GNU

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

Их можно найти на веб%сайте проекта GNU (www.gnu.org).

MISRA

Британская Ассоциация разработчиков безотказного ПО для автомобильной промышленности (Motor Industry Soft% ware Reliability Association – MISRA) разработала известный набор стандартов для написания на C критически важного встроенного программного обеспечения. В него входит 127 пра% вил, и есть ряд инструментов, с помощью которых можно про% верить код на соответствие этим правилам. Правила в боль% шей мере ориентированы на применение языка, нежели на оформление кода.

Проект foo

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

 

 

 

 

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

 

 

 

 

 

63Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Во многих компаниях, разрабатывающих программное обеспечение, есть свой фирменный стиль кодирования, в котором среди прочего опре% делены правила форматирования кода. Но зачем он нужен, ведь любой код, написанный в «правильном» стиле, легко читать и сопровож% дать? Зачем нужны эти бюрократические навороты, если понимание кода не вызывает трудностей?

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

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

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

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

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

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

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

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

64m

 

 

 

 

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

 

 

 

 

ваши неудобства от необходимости его придерживаться. Если вы не согласны с принятым стандартом, все равно нужно его выполнять.

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

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

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

КАК ВЫГЛЯДЕТЬ ПРЕЗЕНТАБЕЛЬНО

Начало

кодирования

Да

 

Код

 

Нет

 

 

новый?

 

 

Есть

Нет

Есть

 

Не повезло –

фирменный

 

неофициальный

 

чужой код

стиль?

 

стиль?

 

 

Да

Да

Нет

 

 

 

 

 

 

 

 

Нет

Есть

 

 

Сдавайтесь

в нем какой7то

 

 

 

 

 

 

 

один стиль?

 

 

 

 

Да

 

 

Он вам

 

И то хорошо...

 

 

нравится?

 

 

 

 

 

 

Нет

 

Да

 

Плохо, но придется

Примите

смириться

этот стиль