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

 

 

 

90m

 

 

 

 

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

 

 

 

 

Хорошие программисты…

Плохие программисты…

Понимают важность выбора Не заботятся о понятности своего

имен и занимаются этой про% блемой

Не забывают о выборе пра% вильного имени для каждого создаваемого объекта

Учитывают многие факторы: длину имени, понятность, контекст и т. д.

Видят общую картину и вы% бирают имена в рамках про% екта (или проектов)

кода

Пишут одноразовый код, плохо про% думывая его в погоне за скоростью

Игнорируют естественную идиома% тику языка

Не стремятся к единообразию в име% нах

Не заботятся об общей картине и не интересуются согласованностью сво% его кода с проектом в целом

См. также

Глава 2. Тонкий расчет

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

Глава 4. Литературоведение

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

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

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

 

 

 

 

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

 

 

 

 

 

91Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

1.Хорошо ли выбраны следующие имена переменных? Ответом мо% жет быть да (объясните почему и в каком контексте), нет (объясни% те почему) или не знаю (объясните почему).

a.int apple_count

b.char foo

c.bool apple_count

d.char *string

e.int loop_counter

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

a.doIt(...)

b.value(...)

c.sponge(...)

d.d. isApple(...)

3.Что важнее для системы именования – легкость чтения или лег% кость написания кода? Как можно облегчить то или другое?

a.Сколько раз вы пишете один и тот же фрагмент кода? (Подумай% те.) Сколько раз вы его читаете? Ответы на эти вопросы должны помочь определить относительную важность.

b.Как вы поступаете при противоречиях в принципах именова% ния? Допустим, вы работаете над кодом C++ в стиле camelCase и должны модифицировать библиотеку STL (используется_под% черкивание). Как лучше поступить в такой ситуации?

4.При каком размере цикла следует дать осмысленное имя перемен% ной цикла?

5.Если в C assert является макросом, почему его имя пишут строчны% ми буквами? Зачем дают макросам выделяющиеся имена?

6.Каковы достоинства и недостатки принципов именования стан% дартной библиотеки вашего языка?

7.Может ли надоесть имя? Правильно ли пользоваться одним и тем же именем локальной переменной в разных функциях? Правильно ли пользоваться локальными именами, которые перекрывают (и скры% вают) глобальные имена? Почему?

8.Объясните сущность венгерской нотации. Каковы ее достоинства и недостатки? Согласуется ли она с современными принципами разработки кода?

9.Часто классы содержат члены%функции, предназначенные для чте# ния и записи значений определенных свойств. Какие схемы именова%

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

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

92m

 

 

 

 

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.Искусны ли вы в выборе имен? Какими из предложенных правил вы пользуетесь на сегодняшний день? Занимаетесь ли вы составле% нием имен и применением этих правил сознательно или это проис% ходит стихийно? В какой области вы могли бы улучшить свою практику?

2.Есть ли в вашем стандарте кодирования правила для выбора имен?

a.Охватывает ли он все рассмотренные нами ситуации? Доста# точно ли он полон? Есть ли от него польза или он представляет собой формальность?

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

3.Какое самое неудачное имя встретилось вам в последнее время? Бы% ли ли случаи, когда имена вводили вас в заблуждение? Как бы вы изменили их, чтобы избежать подобных проблем в будущем?

4.Приходится ли вам портировать код с одной платформы на другую? Как это повлияло на выбор вами имен файлов, других объектов

и общей структуры кода?