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

 

 

 

 

 

 

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

 

 

 

 

3

Что в имени тебе моем?

Существенные вещи должны иметь выразительные имена

В этой главе:

Почему в качественном коде должны быть хорошие имена

Что такое хорошее имя?

Какие имена давать переменным, функциям, типам, пространствам имен, макросам и файлам

Когда я употребляю слово, – сказал Шалтай#Болтай довольно презрительно, – оно означает только то, что мне от него требуется, – не больше и не меньше.

Льюис Кэррол

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

Имя значит очень много. Не нужно бояться имени, но недооценивать его значения не следует. Имя описывает:

Идентичность

Имя составляет основу нашего представ% ления о личности. Примеры тому дает история – даже относящаяся к двум ты%

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

74m

 

 

 

 

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

 

 

 

 

 

Глава 3. Что в имени тебе моем?Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Поведение

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

Узнавание

Имя помечает нечто как отдельный объект. В результате из эфемер% ной идеи возникает конкретная сущность. Пока кто%то не ввел сло% во «электричество», никто не понимал, о чем идет речь, хотя суще% ствовало неясное представление о связанных с ним эффектах из на% блюдения за молнией или опытами Бенджамина Франклина. Полу% чив свое название, явление стало идентифицироваться как особая сила, поэтому легче стало его обсуждать. В баскской культуре счи% тается, что, назвав что%то по имени, вы доказываете его существо% вание: Izena duen guzia omen da – если у него есть имя, значит, оно существует. (Kurlansky 99)

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

Совершенно ясно, что имя имеет огромное значение.

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

void checkForContinue(bool weShouldContinue)

{

if (weShouldContinue) abort();

}

1Оно зависит также от ее настроения в этот день.

 

 

 

 

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

 

 

 

 

 

75Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Имя параметра (weShouldContinue – нужно продолжить) просто врет или, по крайней мере, имеет смысл, противоположный ожидаемому. Функция не будет работать предполагаемым образом, и в результате выполнение программы будет прекращено – весьма тяжелое последст% вие всего лишь неправильно названной переменной.

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

Зачем нужны хорошие имена?

Нужно тщательно выбирать имена для своих объектов. Ведь исходный код должен быть понятен. Имя создает путь к пониманию, контролю и овладению. Если правильно выбрать имя, по нему можно понять на# значение объекта.

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

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

Учитесь давать объектам прозрачные имена – они должны ясно описывать то, что за ними скрывается.

Каким объектам мы даем имена?

Задумаемся как программисты над тем, каким объектам мы даем име% на и какие имена мы им даем. Сначала о том, какие конструкции ча% ще всего получают от нас имена, когда мы пишем код:

Переменные

Функции

Типы (классы, перечисления, структуры, определения типов)

Имена пространств C++ и пакетов Java

Макросы

Файлы с исходным текстом

Этот список далеко не исчерпывает все случаи; существуют другие объ% екты, более высокого уровня, которым следует давать осмысленные

1Так называемое «число Миллера», названное в честь исследователя в об%

ласти психологии (Miller 56).