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

 

 

 

612m

 

 

 

 

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

 

 

 

 

 

Ответы и обсуждениеClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

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

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

1.Что важнее – всем членам команды разработчиков пользоваться оди наковой IDE или каждому выбрать для себя наиболее подходящую среду? Каковы последствия использования разных инструментов в од ной команде?

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

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

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

Нельзя обойтись хотя бы без такого набора:

Элементарный редактор

Минимальная поддержка языка (компилятор, интерпретатор или то и другое в зависимости от языка)

Компьютер, на котором они выполняются

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

Необходима система контроля версий, иначе работать становится опасно.

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

Необходим также инструмент сборки для создания программной системы.

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

3.Какие инструменты мощнее – основанные на командной строке или использующие GUI?

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Главаm

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

 

 

 

 

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

 

 

 

 

 

613Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Стоит надрать вам уши, если вы стали отвечать на этот вопрос. Ко% мандная строка и GUI – разные вещи. Весь сказ.

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

4. Есть ли строительные инструменты, не являющиеся программами?

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

Регулярные выражения

Графические компоненты («виджеты» GUI)

Сетевые сервисы

Стандартные протоколы и форматы (например, XML)

Диаграммы UML

Методологии проектирования (например, карточки CRC)

5.Какое качество важнее всего для инструмента?

a.Универсальность интерфейса

b.Гибкость

c.Настраиваемость

d.Мощь

e.Легкость освоения и применения

Все они важны. Относительная ценность может меняться в зависимо% сти от типа применяемых инструментов и ситуации, в которой они ис% пользуются.

Мощь важна; инструменты должны быть достаточно мощными для решения поставленной задачи, иначе ваша жизнь превратится в кош% мар. Если бы это было не так, программисты редактировали бы свой код с помощью Notepad или vi.

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

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

a.Насколько уверенно вы пользуетесь ими?

b.Насколько полно вы используете возможности каждого инстру мента?

c.Как вы учились работать с ними? Пытались ли когда нибудь совер

шенствовать свои навыки работы с ними?

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

614m

 

 

 

 

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

 

 

 

 

 

Ответы и обсуждениеClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

d. Известны ли вам более удачные инструменты?

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

2.Насколько современны ваши инструменты? Имеет ли для вас значе ние, что их версии не самые новые?

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

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

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

3.Чему вы отдаете предпочтение – интегрированным наборам (типа ви зуальной среды разработки) или цепочкам отдельных инструментов? В чем преимущества противоположного подхода? Насколько велик ваш опыт работы в том и другом стиле?

Необдуманный ответ может стоить вам ушей (см. ответ на вопрос 3 в разделе «Вопросы для размышления» на стр. 612). Попробуйте со% ставить список преимуществ другого способа работы, чтобы избежать узкого и предвзятого взгляда.

4.Соглашаетесь ли вы с настройками своего редактора по умолчанию или стремитесь переделать в нем все на свой вкус? Какой подход «пра вильнее»?

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