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

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

24

Что дальше?

Все хорошо, что хорошо кончается

В моем начале – мой конец, в моем конце – мое начало.

Томас Элиот

Поздравляем! Вы добрались до конца книги. Либо вы из тех, кто лю% бит все испортить, начав читать с последней страницы. (Тогда сразу сообщаю: Убийцей был дворецкий.) Если же вы прочли все главы, то должны были:

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

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

Выработать свои персональные способы повышения мастерства. (Вы же попробовали ответить на вопросы? Если нет, сделайте это сейчас.)

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

Узнать об обезьянках из комиксов больше, чем вам может понадо% биться.

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

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

578m

 

 

 

 

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

 

 

 

 

 

Глава 24. Что дальше?Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

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

Но что же дальше?

Важно не прекращать задавать вопросы. Любознательность – великая вещь. Нельзя без благоговения созерцать тайны вечности, жизни, чудесного устройства окружающего мира. Достаточно каждый день пытаться проникнуть в малую часть этой тайны.

Берегите священный дар любознательности.

Альберт Эйнштейн

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

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

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

Должен вас огорчить, но путь к совершенству в кодировании точно та% кой же. Мало лишь прочесть эту книгу. Нужно браться за работу и де# лать ее. Так, как это требуется. Что же можно предложить на практи% ке? Вот несколько простых идей:

 

 

 

 

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

 

 

 

 

 

579Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

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

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

ивыпивкой!)

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

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

истановление как программиста. Если вы не будете осваивать но% вые приемы, то никогда ничему не научитесь и перестанете разви% ваться. Джордж Бернард Шоу писал, что «лучше всю жизнь делать ошибки, чем всю жизнь ничего не делать».

Относитесь к рекомендациям и замечаниям по поводу вашего кода конструктивно. Взгляните еще раз на свою работу и поищите, что

в ней можно сделать лучше.

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

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

Прочтите следующие классические книги:

«The Mythical Man%Month»1 (Brooks 95)

Gerald M. Weinberg «The Psychology of Computer Programming», Dorset House Publishing, 1998 (Weinberg 71)

1Фредерик Брукс «Мифический человеко%месяц или как создаются про%

граммные системы». – Пер. с англ. – СПб.: Символ%Плюс, 2000.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

580m

 

 

 

 

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

 

 

 

 

 

Глава 24. Что дальше?Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

«Peopleware: Productive Projects and Teams»1 (DeMarco 99)

«The Pragmatic Programmer»2 (Hunt Davis 99)

«Code Complete»3 (McConnell 04)

«The Practice of Programming»4 (Kernighan Pike 99)

«Design Patterns: Elements of Reusable Object%Oriented Soft% ware»5 (Gamma et al. 94)

«Refactoring: Improving the Design of Existing Code»6 (Fowler 99)

Спросите у коллег, какие книги им показались ценными. Поищите соответствующие журналы, веб%сайты и конференции.

Займитесь преподаванием. Обучите менее подготовленного про% граммиста. Передавая свои знания, вы сами многому научитесь.

Расширьте свое мастерство, присоединившись к профессиональной организации, такой как British Computer Society (BCS), Association for Computing Machinery (ACM) или ACCU (www.accu.org). Затем включайтесь в ее работу – пишите. Чем активнее ваше участие, тем больше ваши инвестиции в себя самого. Например, ACCU активно способствует сотрудничеству. Она осуществляет проекты под руко% водством наставников и поддерживает публикации членов в своих периодических изданиях. Эти организации проводят конкурсы программистов, обеспечивают форумы для социальных сетей и име% ют много местных отделений, где можно встретить единомышлен% ников, интересующихся мастерством программирования.

Получайте удовольствие! Сочиняйте код для решения хитрых за% дач. Создавайте ПО, которым можно гордиться. Конфуций сказал: «Если вам нравится то, чем вы занимаетесь, вы больше ни одного дня в своей жизни не будете работать».

Займитесь совершенствованием своего мастерства. Не теряйте любви к про& граммированию и желания быть в нем мастером.

1Том Демарко и Тимоти Листер «Человеческий фактор: успешные проекты и команды». – Пер. с англ. – СПб.: Символ%Плюс, 2005.

2Э. Хант и Д. Томас «Программист%прагматик. Путь от подмастерья к мас% теру». – Пер. с англ. – Лори, 2009.

3С. Макконнелл «Совершенный код. Практическое руководство по разра% ботке программного обеспечения». – Пер. с англ. – СПб.: Питер, 2005.

4Б. Керниган и Р. Пайк «Практика программирования». – Пер. с англ. – М: Вильямс, 2004.

5Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. «Приемы объектно%ориен% тированного проектирования. Паттерны проектирования». – Пер. с англ. – СПб.: Питер, 2005.

6Мартин Фаулер «Рефакторинг. Улучшение существующего кода». – Пер.

с англ. – СПб.: Символ%Плюс, 2002.