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

16. Кодеры

 

 

 

 

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

 

 

 

 

 

657Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

небольших новых функций или немного смошенничать (например, «Эта версия содержит важные исправления ошибок»).

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

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

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

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

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

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

1.Сколько нужно программистов, чтобы заменить электрическую лам почку?

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

2.Что лучше – энтузиазм, но слабое мастерство (при некоторой компе тентности) или выдающийся талант, но отсутствие мотивации?

a.У кого код окажется лучше?

b.Кто окажется лучшим программистом? (это разные вещи)

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

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

Простые «учебные» программы

Новые системы, создаваемые с чистого листа

Расширения существующих программ

Сопровождение старой базы кода

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

658m

 

 

 

 

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

 

 

 

 

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

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

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

3.Мы пишем разные программы в зависимости от «унаследованного» кода. Чем различается написание следующих типов кода:

«несерьезная» программа

абсолютно новая система

расширение существующей системы

сопровождение старого кода

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

«Несерьезная» программа

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

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

Новая система

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

Расширения

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