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

 

 

 

176m

 

 

 

 

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

 

 

 

 

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

Средства поддержки языка

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

Язык

Язык сам по себе является инструментом. Возможности, предоставляе% мые одними языками, могут отсутствовать в других. Соответствующие пробелы можно восполнить с помощью отдельных инструментов, обра% батывающих исходный код программы. Например, часто осуждаемый препроцессор C может оказаться весьма полезен; есть пакеты обработ% ки текстов и для других языков. Инструменты создания общего кода (типа шаблонов C++), а также проверка пред% и постусловий служат другим примером полезных средств работы с языками.

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

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

Исполнительная система и интерпретатор

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

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

JVM (виртуальная машина Java) – стандартный интерпретатор язы% ка. Стандартная библиотека C++ поддерживает язык, обеспечивая дей% ствия по умолчанию некоторых базовых функций языка. Аналогично язык C# полагается на поддержку среды .NET на этапе исполнения.

 

 

 

 

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

 

 

 

 

 

177Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Компоненты и библиотеки

И это тоже инструменты! Благодаря повторному использованию про% граммных компонент и наличию библиотек с нужными вам функция% ми вы избавляетесь от необходимости изобретать колесо заново. Хоро% шая библиотека повысит эффективность труда программиста не хуже любого другого программного инструмента.

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

Все современные языки предоставляют некоторый уровень библиотеч% ной поддержки. Прекрасный пример мощной расширяемой библиоте% ки – C++ STL. Язык Java и среда .NET поставляются с труднообозри% мым множеством стандартных библиотек. Существует масса библио% тек сторонних производителей – как коммерческих, так и бесплатных.

Инструменты различного назначения

На этом история не заканчивается. Вы столкнетесь со многими други% ми инструментами. Раздел «См. также» на стр. 179 отмечает ряд дру% гих мест, где мы будем говорить об инструментах.

Вот еще некоторые интересные разновидности инструментов.

Средства документирования

Хорошая документация имеет большую ценность. Есть много средств, способствующих ее составлению, как в составе исходного кода, так и отдельно от него (о части из них рассказывается в разделе «Практи% ческие методологии самодокументирования» на стр. 103). Трудно пе% реоценить значение хорошего текстового процессора.

Документацию пишут для того, чтобы ее читали. Большое значение имеют сетевые системы подсказки (основанные на высококачествен% ных текстах).

Управление проектами

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

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

178m

 

 

 

 

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

 

 

 

 

Мастерим сами

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

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

Вот обычные способы, которыми можно создать инструмент:

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

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

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

При написании инструмента необходимо учитывать:

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

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