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

 

 

 

156m

 

 

 

 

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

 

 

 

 

 

Глава 6. Людям свойственно ошибатьсяClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Глава 9. Поиск ошибок

Необработанные сбойные ситуации проявляются в виде ошибок в ко% де. Описываются способы борьбы с ними. (Лучше было бы не позво% лять им возникать.)

Контрольные вопросы

Подробное обсуждение этих вопросов можно найти в разделе «Ответы и обсуждение» на стр. 607.

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

1.Эквивалентны ли такие механизмы сообщения об ошибках, как

возвращаемые значения и исключительные ситуации? Докажите.

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

3.В чем различия между реализациями механизма исключительных ситуаций в разных языках?

4.Сигналы – это классический механизм UNIX. Нужны ли они по% прежнему, когда мы располагаем современными технологиями ти% па исключительных ситуаций?

5.Какая структура кода лучше всего подходит для обработки ошибок?

6.Как бы вы поступили с ошибками, возникшими в вашем коде обра% ботки ошибок?

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

1.Насколько полно реализована обработка ошибок в вашем нынеш% нем программном проекте? Как это отражается на стабильности программы?

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

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

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

4.Как вам проще справляться со сбойными ситуациями – с помощью

возвращаемых значений или исключений? Вы уверены, что умеете

писать код, корректно обрабатывающий исключительные ситуации?

 

 

 

 

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

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

II

Тайная жизнь кода

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

Мы рассмотрим:

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

Обзор профессиональных инструментов и способов их применения.

Глава 8. Время испытаний

Код не может считаться завершенным, пока не проверено, что он решает поставленные задачи; он должен быть протестирован. Мы рассмотрим технологии проведения тестирования.

Глава 9. Поиск ошибок

Борьба с неизбежным: как найти и удалить ошибки, имеющиеся в коде.

Глава 10. Код, который построил Джек

«Сборка» кода: процедура создания выполняемых программ из ис% ходного кода.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

158m

 

 

 

 

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

 

 

 

 

 

Часть II. Тайная жизнь кодаClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Глава 11. Жажда скорости

Рассмотрим детали, связанные с оптимизацией кода. Что, зачем, когда и как.

Глава 12. Комплекс незащищенности

Тернистая тема безопасности программ – как защитить код от умыш% ленного злоупотребления и злонамеренных атак.

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