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

 

 

 

678m

 

 

 

 

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

 

 

 

 

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

Каким образом вы могли бы оказать положительное влияние на ситуа% цию с рецензированием в вашем нынешнем проекте?

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

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

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

3. Какой процент вашего кода когда либо проходил рецензирование?

Можно не сомневаться, что этот объем невелик, иначе вы выпадаете из общих рядов. Насколько формальными были обсуждения? Насколько полезными они были и какое влияние оказали на качество кода в ко% нечном итоге?

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

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

Глава 21. Какой длины веревочка?

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

1.Как спасти отстающий проект и привести его в соответствие с графи ком?

Один из способов не стать свидетелем провала проекта – это как можно скорее бежать из него, как крысе с тонущего корабля. Однако это не очень профессионально!

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Главаm

21. Какой длины веревочка?

 

 

 

 

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

 

 

 

 

 

679Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Изменить сроки проекта; попробуйте договориться с клиентом о бо% лее поздней доставке.

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

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

2.Как правильно реагировать на то, что конечный срок вам устанавли вают до того, как проведено технико экономическое обоснование или планирование?

Будьте благоразумны! Фиксированный срок поставки может быть за% конным деловым требованием: вы получите деньги, если поставите программу вовремя, в противном случае вы не получите ничего. Не всегда удается делать продукт идеологически правильно, отодвинув для этого конечный срок или ограничив объем функций.

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

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

3. Как обеспечить реальную пользу плана разработки?

Для высококачественных планов разработки характерны:

Точность

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

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

680m

 

 

 

 

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

 

 

 

 

Детальность

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

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

Согласованность

Все согласны с планом: руководство удовлетворено уровнем рисков, а программисты согласны с оценками сроков, ничего не упущено и отражены все зависимости.

Наглядность

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

Контролируемость

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

4.Почему программисты работают с разной скоростью? Как отразить это в плане?

Программисты отличаются друг от друга во многих отношениях:

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

Различие в уровне опытности приводит к разным конструктивным решениям.

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

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

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