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

 

 

 

164m

 

 

 

 

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

 

 

 

 

 

Глава 7. Инструментарий программиста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

 

 

 

 

 

165Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Выясните, каковы его возможности

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

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

Научитесь им управлять

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

Какое место занимает инструмент в общей цепочке? От этого зависит его применение. Например, инструменты UNIX можно последователь% но применять как фильтры в конвейере, собирая из отдельных мелких утилит более крупные.1 Разобравшись с управлением каждым инстру% ментом и взаимодействием их между собой, вы подниметесь на новый уровень работы с инструментарием.

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

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

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

1Если эта тема вам мало знакома, настоятельно советую ее изучить. Вполне можно начать с команды UNIX man bash, а также поискать страницы руко% водства по pipelines.

2sed – это потоковый редактор с интерфейсом командной строки, описан%

ный в следующем разделе.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

166m

 

 

 

 

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

 

 

 

 

 

Глава 7. Инструментарий программистаClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

нако макросы в данном контексте будут эффективнее – ведь я уже на% хожусь в редакторе и поэтому могу быстро их запустить.

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

Для каждой задачи есть свой инструмент. Не стоит щелкать орехи кувалдой.

Убедитесь, что он работает

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

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

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

Имейте четкие данные о том, как получить дополнительные сведения

Необязательно самому знать все. Фокус в том, чтобы знать того, кто знает все!

Определите, где находится документация к инструменту. Кто осуще% ствляет поддержку? Как получить дополнительную информацию? Найдите руководства, комментарии к версиям, сетевые ресурсы, внут% ренние файлы подсказки и страницы руководства (man). Выясните, где они находятся и как добраться до них при необходимости. Есть ли в сетевых версиях удобные средства поиска и именные указатели?

Узнайте, как получить новые версии

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

1Генератор синтаксических анализаторов; не беспокойтесь, далее и о нем

будет сказано.