Оцените указанное время путешествия на автомобиле, а также время перелета между соответствующими городами (на обычных коммерческих авиарейсах). Теперь попытайте проверить ваши оценки, используя информационные источники, например карты и расписания.
5.9. Отладка
Написанная (вчерне?) программа всегда содержит ошибки. Небольшие программы случайно компилируются и выполняются правильно при первой же попытке. Но если это происходит с любой не тривиальной программой, то это очень и очень подозрительно. Если программа правильно выполнилась с первой попытки, идите к друзьям и празднуйте, поскольку это происходит не каждый год.
Итак, написав определенную программу, вы должны найти и удалить ошибки. Этот процесс обычно называют
Отладка выглядит примерно так.
1. Компилируем программу.
2. Редактируем связи.
3. Выполняем программу.
Обычно эта последовательность операций выполняется снова и снова: для действительно крупных программ этот процесс повторяется сотни и тысячи раз год за годом. Каждый раз что-то работает не так, как ожидалось, и приходится исправлять какую-то ошибку. Я считаю отладку наиболее утомительной и затратной по времени частью программирования и потратил много времени на то, чтобы минимизировать количество времени, затрачиваемого на отладку. Другие считают, что отладка — это захватывающее занятие, суть программирования, которое затягивает, как видеоигры, и удерживает программиста у компьютера многие дни и ночи (я могу засвидетельствовать это по собственному опыту).
while (программа не будет выглядеть работоспособной) { // псевдокод
Бегло просматриваем программу в поисках странностей
Изменяем их так, чтобы программа выглядела лучше
}
Почему мы так беспокоимся об этом? Описанный выше плохой алгоритм отладки слабо гарантирует успех. К сожалению, это описание — не совсем карикатура. Именно так поступают многие люди, допоздна засиживающиеся за компьютером и ощущающие собственную неполноценность.
Основной вопрос отладки звучит так:
5.9.1. Практические советы по отладке
error()
и перехватывать исключение в функции main()
”.
• Хорошо комментируйте свою программу. Это не значит просто: “Добавьте много комментариев”. Вы не можете сформулировать смысл операции на естественном языке лучше, чем на языке программирования. В комментариях следует ясно и коротко указать то, что невозможно выразить в коде.
• Название программы.
• Цель программы.
• Кто написал программу и зачем.
• Номера версий.
• Какие фрагменты кода могут вызвать сложности.
• Основные идеи.
• Как организован код.
• Какие предположения сделаны относительно вводных данных.
• Каких фрагментов кода пока не хватает и какие варианты еще не обработаны.
• Используйте осмысленные имена.
• Это не значит: “Используйте длинные имена”.
• Используйте логичную схему кода.
• Ваша интегрированная среда программирования может помочь, но она не может сделать за вас всю работу.
• Воспользуйтесь стилем, принятым в книге.
• Разбивайте программу на небольшие фрагменты, каждый из которых выражает определенную логическую операцию.
• Старайтесь, чтобы функция не превышала больше одной-двух страниц; большинство функций будет намного короче.
• Избегайте сложных выражений.