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

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

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

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

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

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

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 164 165 166 167 168 169 < 170 > 171 172 173 174 175 176 .. 426 >> Следующая

легче читать. Такое упорядоченное применение
330 ЧАСТЬ III Переменные
глобальных данных - отличный пример программирования с
использованием языка, а не на языке (см. раздел 34.4).
Эмуляция перечислимых типов Вы также можете использовать
глобальные переменные для эмуляции перечислимых типов в таких
языках, как Python, которые напрямую такие типы не
поддерживают.
Оптимизация обращений к часто используемым данным Иногда
переменная так часто вызывается, что упоминается в списке
параметров каждого метода. Вместо того чтобы включать ее в
каждый список параметров, вы можете сделать ее глобальной.
Однако случаи, когда к переменной обращаются отовсюду, редки.
Обычно она используется ограниченным набором методов. Их вы
можете объединить в класс вместе с данными, с которыми они
работают. Позднее мы вернемся к этому вопросу.
Исключение бродячих данных Иногда вы передаете данные методу
или классу только для того, чтобы передать в другой метод или
класс. Например, у вас может быть объекг-обработчик ошибок,
применяемый в каждом методе. Если метод в середине цепочки
вызовов не использует этот объект, он называется "бродячим"
(tramp data). Применение глобальных переменных помогает
исключить бродячие данные.
Используйте глобальные данные только как последнее средство
Прежде чем вы решите использовать глобальные данные,
рассмотрите следующие альтернативы.
Начните с объявления всех переменных локальными и делайте их
глобальными только по необходимости Изначально сделайте все
переменные локальными по отношению к конкретным методам. Если
выяснится, что они нужны еще где-то, сделайте их сначала
закрытыми или защищенными переменными класса, прежде чем вы
решите сделать их глобальными. Если в конце концов выяснится,
что их придется сделать глобальными, сделайте, но только после
того, как в этом убедитесь. Если вы с самого начала объявите
переменную глобальной, вы никогда не сделаете ее локальной, но
если она сначала будет локальной, вам, возможно, не
понадобится делать ее глобальной.
Различайте глобальные переменные и переменные-члены класса
Некоторые переменные действительно глобальны в том плане, что
к ним обращаются из любого места программы. Другие - на самом
деле классовые переменные - интенсивно используются только
некоторымо набором методов. Вполне нормально обращаться к
классовой переменной из нескольких методов сколь угодно интен-
сивно. Если методу вне класса нужно использовать эту
переменную, предоставьте ее значение посредством метода
доступа. Не обращайтесь к членам класса напрямую (как если бы
эти переменные были глобальными), даже если ваш язык про-
граммирования это позволяет. Этот совет равносилен
высказыванию "Модуляри- зируйте! Модуляризируйте!
Модуляризируйте!".
Используйте методы доступа Создание методов доступа - основной
подход для решения проблем с глобальными данными (см.
следующий раздел).
ГЛАВА 13 Нестандартные типы данных
331
Используйте методы доступа вместо глобальных данных
Все, что вы можете сделать с глобальными данными, вы можете
сделать лучше, используя методы доступа. Применение методов
доступа - основная технология реализации абстрактных типов
данных и достижения сокрытия информации. Даже если вы не
хотите создавать полноценный абстрактный тип данных, вы все
равно можете использовать методы доступа для централизации
управления данными и для защиты от изменений.
Преимущества методов доступа
Использование методов доступа имеет несколько преимуществ.
¦ Вы получаете централизованный контроль над данными. Если
позднее вы обнаружите более подходящую реализацию структуры,
вам не придется изменять код везде, где она упоминается.
Изменения не всколыхнут всю вашу программу - они останутся
внутри методов доступа.
¦ Вы можете быть уверены, что все ссылки на переменную
тг ~ Перекрестная ссылка Об
изоля-
изолированы. Добавляя элемент в стек с помощью таких ц^нных см
раадп " 5
выражений, как stack.array[ stack.top ] = newElement, вы
легко можете забыть проверить переполнение стека и допустить
серьезную ошибку. Используя же методы доступа (скажем,
PushStack( newElement)), вы можете написать проверку
переполнения стека в методе PushStackQ. Проверка будет
выполняться автоматически, и вы сможете про нее забыть.
¦ Вы автоматически получаете главные преимущества со-
, Перекрестная ссылка 0
сокры-
крытия информации. Методы доступа представляют со- ш информации
ш подраадел
бой примеры сокрытия информации, даже если вы и не
"Скрывайте секреты {к
аопро-
намеревались использовать их в этих целях. Вы можете су о
сокрытии информации}"
изменять содержимое метода доступа, не затрагивая раздела 5*3.
остальную часть программы. Эти методы позволяют вам
отремонтировать интерьер вашего дома, оставив фасад прежним,
так что ваши друзья смогут его узнать.
¦ Методы доступа легко преобразуются в абстрактные типы
данных. Одно из преимуществ этих методов в том, что вы
можете создавать более высокий уровень абстракции, чем при
Предыдущая << 1 .. 164 165 166 167 168 169 < 170 > 171 172 173 174 175 176 .. 426 >> Следующая