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

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

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

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

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

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

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

8.7. Доля защитного программирования в промышленной версии
Один из парадоксов защитного программирования состоит в том,
что во время разработки вы бы хотели, чтобы ошибка была
заметной: лучше пусть она надоедает, чем будет существовать
риск ее пропустить. Но во время эксплуатации вы бы предпочли,
чтобы ошибка была как можно более ненавязчивой, чтобы про-
грамма могла элегантно продолжить или прекратить работу. Далее
перечислены основные принципы для определения, какие
инструменты защитного программирования следует оставить в
промышленной версии, а какие - убрать.
Оставьте код, которые проверяет существенные ошибки Решите,
какие части программы могут содержать скрытые ошибки, а какие
- нет. Скажем, разрабатывая электронную таблицу, вы можете
скрывать ошибки, касающиеся обновления экрана, так как в
худшем случае это приведет к неправильному изображению. А вот
в вычислительном модуле скрытых ошибок быть не должно,
поскольку такие ошибки могут привести к неверным расчетам в
электронной таблице. Большинство пользователей предпочтут
помучиться с некорректным выводом на экран, чем с неправильным
расчетом налогов и аудитом налоговой службы.
ГЛАВА 8 Защитное программирование 205
Удалите код, проверяющий незначительные ошибки Если
последствия ошибки действительно незначительны, удалите код,
который ее проверяет. В нашем примере вы могли бы удалить код,
проверяющий обновление экрана электронной таблицы. При этом
"удалить" значит не физически убрать код, но использовать
управление версиями, переключатели прекомпилятора или другую
технологию для компиляции программы без этого кода. Если
занимаемое место несущественно, проверочный код можно
оставить, но настроив для ненавязчивой записи сообщений в
журнал ошибок.
Удалите код, приводящий к прекращению работы программы Как я
уже
говорил, если на стадии разработки ваша программа обнаруживает
ошибку, ее надо сделать позаметнее, чтобы ее могли исправить.
Часто наилучшим действием при выявлении ошибки будет печать
диагностического сообщения и прекращение работы. Это полезно
даже для незначительных ошибок.
Во время эксплуатации пользователям нужна возможность
сохранения своей работы, прежде чем программа рухнет. И
поэтому они, вероятно, будут согласны терпеть небольшие
отклонения в обмен на поддержание работоспособности программы
на достаточное для сохранения время. Пользователи не
приветствуют ничего, что приводит к потере результатов их
работы, независимо от того, насколько это помогает отладке и в
конце концов улучшает качество продукта. Если ваша программа
содержит отладочный код, способный привести к потере данных,
уберите его из промышленной версии.
Оставьте код, который позволяет аккуратно завершить работу
про- граммы Если программа содержит отладочный код,
определяющий потенциально фатальные ошибки, оставьте его - это
позволит элегантно завершить работу. Например, в марсоходе
Pathfinder инженеры намеренно оставили часть отладочного кода.
Ошибка произошла после того, как Pathfinder совершил посадку.
С помощью отладочных средств, оставленных в нем, инженеры из
лаборатории реактивных двигателей смогли диагностировать
проблему и загрузить исправленный код. В результате Pathfinder
полностью выполнил свою миссию (March, 1999).
Регистрируйте ошибки для отдела технической поддержки
Обдумайте возможность оставить отладочные средства в
промышленной версии, но изменить их поведение на более
подходящее. Если вы заполнили ваш код утверждениями,
прекращающими выполнение программы на стадии разработки, на
стадии эксплуатации можно не удалять их совсем, а настроить
процедуру утверждения на запись сообщений в файл.
Убедитесь, что оставленные сообщения об ошибках дружелюбны
Если вы оставляете в программе внутренние сообщения об
ошибках, проверьте, что они дружественны к пользователю.
Пользователь одной из моих первых программ сообщила мне, что
получила сообщение, гласившее: "У тебя неправильно выделена
память для указателя, черт возьми!" К счастью для меня, у нее
было чувство юмора. Общепринятым и эффективным подходом
является уведомление пользователя о "внутренней ошибке" и
вывод телефона и адреса электронной почты, по которым о ней
можно сообщить.
206 ЧАСТЬ II Высококачественный код
8.8. Защита от защитного программирования
Избыток защитного программирования сам по себе созда-
Слишком много чего-либо-это
плохо, но слишком много вис- ет проблемы. Если вы
проверяете данные, передаваемые
ки - т просто достаточно. через параметры, во всех возможных
местах и всеми воз-
Марк Твен можными способами, ваша программа будет слишком
боль
шой и медленной. Еще хуже то, что дополнительный код,
необходимый для защитного программирования, увеличивает
сложность. Написанный в этих целях код не лишен недостатков, и
вы можете находить дефекты в коде защитного программирования,
так же как и в обычном коде, особенно если вы добавляете его
мимоходом. Подумайте, где надо защищаться, и соответственно
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 426 >> Следующая