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

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

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

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

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

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

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 103 104 105 106 107 108 < 109 > 110 111 112 113 114 115 .. 426 >> Следующая

деструкторах.
Рассмотрите альтернативы исключениям Некоторые Перекрестка*
ссылка 06 шпр- ^ ^ ч ^ ^
нативных подходах к обработ- языки поддерживают исключения 5-
10 лет и более. Одна-
т ошибок т. раздел 8,3. к° ДО сих пор нет общепринятых правил
их безопасного
использования.
Некоторые программисты применяют исключения для обработки
ошибок только потому, что их язык программирования
предоставляет такой механизм. Вам всегда следует принимать во
внимание все возможные методы обработки ошибок: локальную
обработку ошибок, возврат кода ошибки, запись отладочной
информации в файл, прекращение работы системы и др.
Обрабатывать ошибки с помощью исключений только потому, что
это позволяет язык, - классический пример программирования на
языке, а не с использованием языка (см. разделы 4.3 и 34.4).
И напоследок подумайте, действительно ли вашей программе
необходимо обрабатывать исключения. Точка. Как заметил Бьерн
Страуструп, иногда лучшей реакцией на серьезную ошибку периода
выполнения будет освобождение всех ресурсов и прекращение
работы. Пусть пользователь перезапустит программу с надле-
жащими входными данными (Stroustrup, 1997).
8.5. Изоляция повреждений, вызванных ошибками
Изоляция повреждений, или баррикада, - это стратегия, сходная
с тем, как изолируются отсеки в трюме корабля. Если корабль
налетает на айсберг и в днище появляется пробоина, отсеки
задраиваются, и остальная часть корабля не страдает. Баррикады
также аналогичны брандмауэрам, предотвращающим распространение
огня из одной части здания в другую. (Ранее баррикады и
назывались брандмауэрами, но сейчас термин "брандмауэр" обычно
относится к блокировке нежелательного сетевого трафика.)
Один из способов изоляции в целях защитного программирования
состоит в разработке набора интерфейсов в качестве оболочки
для "безопасных" частей кода. Проверяйте корректность данных,
пересекающих границу безопасной области, и реагируйте
соответственно, если данные неправильные (рис. 8-2).
ГЛАВА 8 Защитное программирование 199
; Графический ;
! интерфейс ;
! пользователя ;
Интерфейс • командной |
! строки
г -----------
! Данные в режиме;
! реального ! t
• времени :
• Внешние j
| файлы ¦
: Другие •
! внешние ;
; объекты ;
Эти данные считаются непроверенными и ненадежными
Внутренний класс 1
Внутренний класс 2
{Проверочный: \ класс 1 !
Проверочный L класс 2 !
; Проверочный \ : класс п :
Внутренний класс 3
Внутренний класс 4
Внутренний класс 5
Внутренний класс 6
Внутренний класс 7
Внутренний
класс8
Внутренний класс 9
Внутренний класс 10
Внутренний класс 11
Внутренний класс п
Эти классы отвечают за очистку данных.
Они составляют баррикаду
Эти классы могут считать, что данные проверены и корректны
Рис. 8-2. Выделение части кода для работы с непроверенньши
данными, а части - для работы с только корректными данными,
может быть эффективным способом освободить большую часть
программы от ответственности за проверку допустимости данных
Тот же подход применим и на уровне класса. Открытые методы
класса предполагают, что данные небезопасны и отвечают за их
проверку и исправление. Если данные были проверены открытыми
методами класса, закрытые методы могут считать, что данные
безопасны.
Этот подход можно представить и такой аналогией: данные
стерилизуются, прежде чем войти в операционную. Все, что
находится в ней, считается безопасным. Ключевой вопрос
проектирования - решить, что должно быть в операционной, что
- остаться снаружи и где быть дверям. Иначе говоря, какие
методы поместить внутри безопасной зоны, какие - снаружи, а
какие будут проверять данные. Простейший способ - проверка
внешних данных по мере их поступления. Но информацию часто
необходимо проверять неоднократно, на нескольких уровнях,
поэтому иногда требуется многоуровневая стерилизация.
Преобразовывайте входные данные к нужному типу в момент ввода
Данные на входе обычно представлены в форме строки или числа.
Иногда значение соответствует булевому типу, например, "да"
или "нет". Иногда - перечислимому, скажем, Color Red, Color
Green, и Color Blue. Сохранение данных неопределенного типа в
течение неизвестного периода времени усложняет программу и
увеличивает шансы, что кто-нибудь может вывести программу из
строя, указав "Да" в качестве цвета. Преобразуйте входные
данные в надлежащую форму как можно раньше.
200 ЧАСТЬ II Высококачественный код
Связь между баррикадами и утверждениями
Применение баррикад делает отчетливым различие между
утверждениями и обработкой ошибок. Методы с внешней стороны
баррикады должны использовать обработчики ошибок, поскольку
небезопасно делать любые предположения о данных. Методы внутри
баррикад должны использовать утверждения, так как данные,
переданные им, считаются проверенными при прохождении
баррикады. Если один из методов внутри баррикады обнаруживает
некорректные данные, это следует считать ошибкой в программе,
а не в данных.
Предыдущая << 1 .. 103 104 105 106 107 108 < 109 > 110 111 112 113 114 115 .. 426 >> Следующая