Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Совершенный код. Мастер-класс - Макконнелл С.

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 149 150 151 152 153 154 < 155 > 156 157 158 159 160 161 .. 426 >> Следующая

// Создание перечислимого типа Output.
class Output {
private OutputO {}
public static final Output Screen = new OutputO; public static
final Output Printer = new OutputO; public static final Output
File = new OutputO;
ГЛАВА 12 Основные типы данных
299
Такие перечислимые типы делают вашу программу читабельнее,
поскольку вы можете использовать открытые члены класса,
например, Country.England и Out- put.Screen, вместо
именованных констант. Именно такой способ создания пере-
числимых типов еще и обеспечивает безопасность типов, так как
каждый тип объявлен как класс и компилятор будет проверять
некорректные присваивания вроде Output output =
Country.England (Bloch, 2001).
В языках, не поддерживающих классы, такого же эффекта можно
достичь, аккуратно используя глобальные переменные для каждого
элемента перечисления.
12.7. Именованные константы
Именованные константы аналогичны переменным за исключением
того, что вы не можете изменить значение константы после ее
инициализации. Именованные константы позволяют ссылаться на
постоянные величины, например, максимальное количество
работников, используя имя, а не число - MAXIMUM EMPLOYEES, а
не 1000. Применение именованных констант - это способ
"параметризации" программы, т. е. размещение некоторой
характеристики, которая может измениться, в параметре. В
результате вам потребуется изменить его только в одном месте,
а не по всей программе. Если вы когда-нибудь объявляли массив
такой длины, какой, по- вашему, должно хватить для любых
ситуаций, а потом выяснялось, что массив слишком мал, вы
оцените значение именованных констант. Когда размер массива
изменяется, вы меняете только определение константы,
используемой для объявления массива. Такое "централизованное
управление" имеет большое значение для того, чтобы сделать
работу с ПО действительно приятной: упростить его поддержку и
модификацию.
Используйте именованные константы в объявлениях данных
Именованные константы повышают читабельность и удобство
сопровождения объявлений данных и выражений, которым
необходимо знать размеры обрабатываемых данных. В следующем
примере для описания длины телефонных номеров работников лучше
использовать LOCAL NUMBER LENGTH, а не число 7.
Хороший пример применения именованных констант в объявлениях
данных (Visual Basic)
Const AREA_CODE_LENGTH = 3 г- LOCAL_NUMBER_LEN GTH здесь
объявляется как константа.
L>Const LOCAL_NUMBER_LENGTH = 7
Type PHONE_NUMBER
areaCode( AREA_CODE_LENGTH ) As String
i- А здесь используется.
localNumber( LOCAL_NUMBER_LENGTH ) As String End Type
11-403
300 ЧАСТЬ III Переменные
' Убедимся, что все символы в телефонном номере - это цифры.
|- И здесь тоже используется.
L>For iDigit = 1 То LOCAL_NUMBER_LENGTH
If ( phoneNumber.localNumber( iDigit ) < "0" ) Or
( "9" < phoneNumber.localNumber( iDigit ) ) Then
1 Выполняем обработку ошибок.
Это простой пример, но вы вполне можете представить программу,
в которой сведения о длине телефонных номеров требуются во
многих местах.
На момент создания программы все работники живут в одной
стране, поэтому вам нужно только семь цифр для их телефонных
номеров. По мере расширения компании ее филиалы открываются в
разных странах, и вам понадобятся более длинные телефонные
номера. Если вы параметризовали эту длину, вам надо сделать
изменение только в одном месте - в определении именованной
константы LOCAL_ NUMBER LENGTH.
JtiiiHliniuifiiii iiiir ПИЩАНИИ Г) ни Как вы' навеРное> поняли,
именованные константы делают
сопровождение программы удобнее. Как правило, любая тнт с".
Щ. 57-60 в книге технология, централизующая управление
объектами, подвер-
(tes, 1931), женными изменениям, - это хороший способ
уменьшить
затраты на сопровождение (Glass, 1991).
Избегайте литеральных значений, даже *безопасных" Как вы
думаете, что в следующем цикле означает число /2?
Пример непонятного кода (Visual Basic)
For i = 1 To 12
profit( i ) = revenue( i ) - expense( i )
Next
Исходя из специфического содержимого кода, можно предположить,
что выполняется цикл по 12 месяцам в году. Но вы уверены? Вы
поставите на это свое собрание "Монти Пайтон"?
В этом случае вам не нужно использовать именованные константы
для поддержки расширяемости: вряд ли число месяцев в году
изменится в ближайшем будущем. Но если при написании кода
остается хотя бы тень сомнения в его предназначении, развейте
ее с помощью хорошо названной именованной константы, например,
так:
Пример более понятного кода (Visual Basic)
For i = 1 To NUM_MONTHS_IN_YEAR
profit( i ) = revenue( i ) - expense( i )
Next
Это уже лучше, но для завершения примера индекс цикла тоже
нужно назвать более информативно:
ГЛАВА 12 Основные типы данных
301
Пример еще более понятного кода (Visual Basic)
For month = 1 To NUM_MONTHS_IN_YEAR
profit( month ) = revenue( month ) - expense( month )
Next
Этот пример выглядит весьма неплохо, но мы можем сделать еще
один шаг вперед, применив перечислимый тип:
Предыдущая << 1 .. 149 150 151 152 153 154 < 155 > 156 157 158 159 160 161 .. 426 >> Следующая