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

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

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

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

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

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

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 259 260 261 262 263 264 < 265 > 266 267 268 269 270 271 .. 426 >> Следующая

для печати"). Наверное, вы и сами можете привести массу
примеров неверных сообщений об ошибках.
Не доверяйте второму сообщению компилятора Одни компиляторы
находят множественные ошибки лучше, а другие хуже. Обнаружив
первую ошибку, некоторые компиляторы приходят в такое
возбуждение, что выдают десятки бессмысленных сообщений о
других ошибках. Другим компиляторам, более рассудительным,
тоже нравится находить ошибки, но они воздерживаются от вывода
неверных сообщений. Если ваш компилятор сгенерировал ряд
сообщений об ошибках и вы не можете быстро найти причину
второго или третьего сообщения, не волнуйтесь - исправьте
первую ошибку и перекомпилируйте программу.
Разделяй и властвуй Разделение программы на части особенно
эффективно при поиске синтаксических ошибок. Если вы
столкнулись с неуловимой синтаксической ошибкой, удалите часть
кода и перекомпилируйте программу. Ошибка или исчезнет
(следовательно, она содержится в удаленном коде), или снова
появится во всей своей красе (в этом случае удалите другую
часть кода). Кроме того, вы можете получить другое сообщение
об ошибке (это значит, что вы перехитрили компилятор и
заставили его сгенерировать более разумное сообщение).
Грамотно ищите неверно размещенные комментарии Перекрестная
ееылка Наличие ^ \
редакторов с проверкой синтак- и Многие текстовые редакторы для
программи-
сиса зависит от зрелости ере* рования автоматически
форматируют комментарии, стро- № программирования (см. раз-
ковые литералы и другие синтаксические элементы. В бо- Я8Я *&)<
лее примитивных средах неправильное размещение
симво
лов комментария или кавычек может запутать компилятор.
ГЛАВА 23 Отладка 539
Для нахождения лишних символов комментария или кавычек в коде
С, C++ или Java вставьте в него последовательность:
Этот фрагмент завершит комментарий или строку, что поможет
сузить область, в которой скрываются лишние символы.
Сложной частью отладки является поиск дефекта. Устранить его
легко. Однако, как часто бывает, из-за этой самой легкости
устранение одних дефектов создает благоприятные условия для
внесения других. По крайней мере в одном исследовании было
обнаружено, что первые варианты исправления дефектов в
половине случаев оказывались некорректными (Yourdon, 1986b).
Ниже я привел несколько советов по снижению вероятности ошибок
этого рода.
усложнить себе жизнь и ухудшить качество программы, чем
исправление дефектов без их настоящего понимания. Приступайте
к устранению проблемы, только разобравшись в ней до конца.
Триангулируйте источник ошибки с применением двух видов
тестов: тех, что должны привести к ошибке, и тех, которые
должны выполниться безошибочно. Выполняйте тесты, пока не
поймете проблему достаточно хорошо, чтобы правильно
предсказывать появление ошибки в каждом случае.
Не ограничивайтесь пониманием проблемы - поймите программу
Если вы понимаете контекст проблемы, у вас больше шансов
решить ее полностью, а не частично. Исследование, проведенное
с использованием короткой программы, показало, что
программисты, стремящиеся полностью понять поведение програм-
мы, чаще изменяли ее правильно, чем программисты,
концентрировавшиеся на локальном поведении и изучавшие
программу только по мере надобности (Littman et al., 1986).
Так как программа в этом исследовании была небольшой (280
строк), я не могу утверждать, что вам следует пытаться
полностью понять программу из 50 ООО строк перед исправлением
дефекта. Но вы должны понять хотя бы код, расположенный по
соседству с дефектом - под "соседством" я понимаю не не-
сколько, а несколько сотен строк.
Подтвердите диагноз проблемы Перед исправлением дефекта
убедитесь, что вы диагностировали проблему правильно.
Выполните тесты, которые доказывают вашу гипотезу и
опровергают конкурирующие гипотезы. Если вы установили только
то, что ошибка может быть результатом одной из нескольких
причин, к устранению проблемы приступать рано - исключите
сначала другие причины.
Расслабьтесь Один программист собирался в лыжный Н|)К0Гда овджиийтв
пр0.
поход. Программа была почти готова к выпуску, он опазды-
грамму стой
вал, и ему оставалось исправить только один дефект. Он из-
Дж$ртд ВяШерг
менил исходный файл и зарегистрировал его в системе {ВегШ
Weinberg)
управления версиями. Он не выполнил перекомпиляцию
программы и не проверил правильность изменения.
/*"/**/
23.3. Устранение дефекта

Прежде чем браться за решение проблемы, поймите ее "Руковод-
ство Дьявола по отладке" не врет: нет более эффективного
способа
540
ЧАСТЬ V Усовершенствование кода
А изменение оказалось неверным, что привело начальника
программиста в ярость. Как можно изменять код приложения,
готового к выпуску, не проверив его? Что может быть хуже?
Разве это не верх некомпетентности?
Если такой поступок и не является вершиной некомпетентности,
он очень к ней близок, но это нисколько не сказывается на его
распространенности. Решение проблемы второпях - один из самых
Предыдущая << 1 .. 259 260 261 262 263 264 < 265 > 266 267 268 269 270 271 .. 426 >> Следующая