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

 

 

 

378m

 

 

 

 

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

 

 

 

 

 

Глава 15. Программное обеспечение – эволюция или революция?Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

См. также

Глава 17. Вместе мы – сила

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

Глава 18. Защита исходного кода

История разработки вашего кода отражена в системе контроля версий.

Глава 22. Рецепт программы

Жизненный цикл разработки программного продукта: описание процедуры создания и развития программ.

Хорошие программисты…

Пишут программы, при% годные для сопровожде% ния, – с ясной структурой

илогичным планом

Замечают, когда код плох,

иготовы к работе с ним

Прежде чем переделывать код, стараются разобрать% ся в нем и в замысле автора

Заботятся о качестве сво% его кода, отказываются делать грубые заплатки

Плохие программисты…

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

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

Предпочитают латать наскоро, а не обдумывать правильное решение

Засоряют код заплатками на скорую руку, предпочитают самые короткие решения

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

Контрольные вопросы

Подробное обсуждение этих вопросов можно найти в разделе «Ответы и обсуждение» на стр. 652.

Вопросы для размышления

1.Какая метафора лучше всего отражает развитие программного про% дукта?

 

 

 

 

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

 

 

 

 

 

379Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

зачатие

рождение

рост

созревание

выход в мир

средний возраст

усталость

выход на пенсию

смерть

3.Есть ли предел продолжительности жизни программного продукта – как долго можно разрабатывать и совершенствовать программу, прежде чем начать работу заново?

4.Соответствует ли объем кода степени зрелости программы?

5.Важно ли обеспечить обратную совместимость при сопровожде% нии кода?

6.В каком случае деградация кода происходит быстрее – при его мо%

дификации или сохранении в неизменном состоянии?

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

380m

 

 

 

 

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

 

 

 

 

 

Глава 15. Программное обеспечение – эволюция или революция?Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Вопросы личного характера

1.Чем вам больше приходится заниматься – написанием нового кода или модификацией имеющегося?

a.Если это новый код, то пишется ли он для вновь создаваемых систем или для расширений существующих?

b.Зависит ли от этого, как вы пишете код? Каким образом?

2.Есть ли у вас опыт работы с уже готовым базовым кодом? Если да:

a.Повлияло ли это на ваш нынешний уровень мастерства? Чему вы в результате научились?

b.Каким был этот код по большей части – плохим или хорошим? Каким образом вы это оценивали?

3.Случалось ли вам вносить изменения, ухудшавшие качество кода? Почему?

4.Через сколько ревизий прошел код вашего текущего проекта?

a.В какой мере менялась функциональность от одной версии к дру% гой? Как менялся код?

b.Осуществлялось ли развитие наудачу, по плану или каким%то промежуточным образом? В чем это проявляется сейчас?

5.Какие меры принимаются в вашей команде, чтобы модификацией

кода не занималось одновременно несколько программистов?

 

 

 

 

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

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

IV

Стадо программистов?

Скучные ряды перегородок. Начинающая компания. Тоска нереальных графиков, плохого менеджмента и ужасных программ. Искусственное освещение и дрянной кофе.

Добро пожаловать на фабрику программ.

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

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

В этой части изучается влияние культуры и динамики на ваш код.

Глава 16. Кодеры

Важные умения и личные качества сильных программистов.

Глава 17. Вместе мы – сила

Как наладить эффективную и продуктивную работу в команде.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

382m

 

 

 

 

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

 

 

 

 

 

Часть IV. Стадо программистов?Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Глава 18. Защита исходного кода

Управление исходным кодом, доступ к которому имеет много про% граммистов: как избежать катастрофы и сердечного приступа.

Так каким общим именем можно назвать группу программистов? Это явно не рой: далеко не та подвижность и редко такая организован% ность. Это не прайд: ни такой свирепости как у львов, ни шансов соз% дать что%то достойное гордости. Ответ (по крайней мере, для C%про% граммистов) ясен: это стадо (brace) программистов.