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

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

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

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

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

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

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

запутанными, чтобы можно было полагаться на одни лишь
утверждения. В больших, долгоживущих системах различные части
могут разрабатываться несколькими проектировщиками 5-10 лет и
более. Разработка будет производиться в разное время и в
разных версиях продукта. Эти проекты будут основаны на разных
технологиях и сосредоточены на различных вопросах разработки
системы. Проектировщики могут быть удалены друг от друга
географически, особенно если элементы системы приобретались у
независимых компаний. Программисты будут использовать
различные стандарты кодирования в разное время жизни системы.
В большой команде разработчиков некоторые неминуемо будут
добросовестнее других, поэтому часть кода будет проверяться
более тщательно, чем остальная. В любом случае, когда тестовые
команды работают в нескольких географических регионах, а
требования бизнеса приводят к изменению тестового покрытия от
версии к версии, рассчитывать на всестороннее низкоуровневое
тестирование системы нельзя.
В этих обстоятельствах одна и та же ошибка может быть
проверена и с помощью утверждения, и обработчиком ошибок. Так,
в исходном коде Microsoft Word условия, которые должны быть
истинными, сперва помещаются в утверждения, а затем и в коде
обработки ошибок рассматривается ситуация, когда утверждение
ложно. В столь сложных и долгоживущих приложениях, как Word,
утверждения служат для выявления как можно большего числа
ошибок периода разработки. Но поскольку приложение очень
сложное (миллионы строк кода) и прошло через столько
изменений, неразумно ожидать обнаружения и исправления всех
мыслимых ошибок до начала поставки приложения пользователям.
Поэтому ошибки должны обрабатываться и в промышленной версии
системы.
Вот как это можно сделать на примере функции Velocity:
ГЛАВА 8 Защитное программирование 189
Пример использования утверждений для документирования пред- и
постусловий (Visual Basic)
Private Function Velocity (
ByRef latitude As Single,
ByRef longitude As Single,
ByRef elevation As Single ) As Single
' Предусловия
tTaK выглядит код утверждения.
Debug.Assert ( -90 <= latitude And latitude
<= 90 )
Debug.Assert ( 0 <= longitude And longitude < 360 )
Debug.Assert ( -500 <= elevation And elevation <= 75000 )
' Откорректируйте входные данные. Значения должны попадать ' в
интервалы, указанные в вышестоящих утверждениях. Иначе ' они
будут заменены ближайшими допустимыми значениями.
|- Таким может быть код, обрабатывающий неверные входные
данные во время выполнения программы.
( latitude < -90 ) Then latitude = -90 Elself ( latitude >
90 ) Then latitude = 90 End If
If ( longitude < 0 ) Then longitude = 0 Elself ( longitude >
360 ) Then
8.3. Способы обработки ошибок
Утверждения применяют для обработки ошибок, которые никогда не
должны происходить. А что делать с возможными ошибками? В
зависимости от обстоятельств вы можете вернуть некое
нейтральное значение, заменить следующим корректным блоком
данных, вернуть тот же результат, что и в предыдущий раз,
подставить ближайшее допустимое значение, записать
предупреждающее сообщение в файл, вернуть код ошибки, вызвать
метод или объект - обработчик ошибки или прекратить
выполнение. Вы также можете использовать несколько способов
одновременно.
Рассмотрим эти приемы подробней.
Вернуть нейтральное значение Иногда наилучшей реакцией на
неправильные данные будет продолжение выполнения и возврат
заведомо безопасного значения. Численные расчеты могут
возвращать 0. Операция со строкой может вернуть пустую строку,
а операция с указателем - пустой указатель. Метод рисования в
видеоигре, получивший неправильное исходное значение цвета,
может по
190
ЧАСТЬ II Высококачественный код
умолчанию использовать цвет фона или изображения. Однако в
методе рисования рентгеновского снимка ракового больного вряд
ли стоит применять "нейтральное значение". В таких случаях
лучше прекратить выполнение программы, чем показать пациенту
неправильные результаты.
Заменить следующим корректным блоком данных Условия обработки
потока данных иногда таковы, что следует просто вернуть
следующие допустимые данные. Если при чтении информации из
базы данных встречена испорченная запись, можно просто
продолжить считывание, пока не будут найдены корректные
данные. Если вы считываете показания термометра 100 раз в
секунду и один раз не получили достоверного измерения, можно
просто подождать 1/100 секунды и обратиться к следующему
показанию.
Вернуть тот же результат, что и в предыдущий раз Если
программа считывания показаний термометра один раз не получила
измерение, она может просто вернуть то же значение, что и в
предыдущий раз. В зависимости от приложения температура скорее
всего не сильно изменится за 1/100 секунды. Если в видеоигре
запросу на прорисовку части экрана передано неверное значение
цвета, вы можете просто вернуть тот же цвет, что и раньше. Но,
авторизуя транзакции в банкомате, вы, пожалуй, не захотите
Предыдущая << 1 .. 98 99 100 101 102 103 < 104 > 105 106 107 108 109 110 .. 426 >> Следующая