Отладка (статья написана для FLASH-5), страница 5

или в меню Help программы Flash.

Методика отладки

Взглянем кратко на некоторые приемы, используемые при отладки кода. Отладка может быть разбита на три отдельных этапа:

·  Обнаружение ошибок

·  Выявление источника ошибки

·  Исправление ошибок

19.2.1. Обнаружение ошибок

Очень часто проблемы кода выявляются в процессе активного программирования. Это означает, что пишется некий код, тестируется Flash-ролик, и оказывается, что он работает не так, как нужно. Проблема обнаружена.

Чем раньше обнаружена проблема, там лучше. Поэтому процесс написания кода должен быть постоянным чередованием приливов и отливов: написать насколько строк кода, экспортировать ролик, проверить, что эти строки работают так, как предполагалось, написать еще несколько строк, экспортировать, проверить и т.д. Убедитесь в правильности работы каждого компонента программы, прежде чем тестировать программу в целом. Постарайтесь не увлечься написанием сложного тела программы без частой попутной проварки ее работоспособности.

Не считайте свой ролик совершенным лишь потому, что не можете обнаружить в нем ошибки сами. Всегда выделяйте время для внешней проверки пользователями, особенно если создаваемый вами код входит в продукт или сервис, предназначенный для некоего клиента. Как уже говорилось, реализуйте проверку ошибок, чтобы исключить возникновение проблем из-за некорректного ввода данных. Например, если вы пишете функцию, которой нужен целочисленный параметр, можно использовать оператор typeof для проверки правильности типа вводимых параметров. Проверяйте также граничные значения, например, очень большие или очень маленькие, а также отрицательные значения и ноль.

Не стоит недооценивать поиск минимума воспроизводимых действий, с помощью которых можно воссоздать проблему. Они должны представлять собой наикратчайший путь к воспроизведению ошибки. Отчет об ошибке типа: "я воспроизводил ролик в течении часа, а потом все заглохло" принесет мало пользы. Полезные отчеты об ошибках содержат последовательность действий, например:

1.  Ввести 0 в качестве количества лет.

2.  Щелкнуть по кнопке Calculate (Вычислить).

3.  В поле Results (Результат) вместо суммы в рублях выводится "NaN".

19.2.2. Выявление источника ошибки

Признание наличие ошибки является лишь началом пути к ее устранению. Первейшей задачей является выяснение источника ошибки, как бы высоко он ни находился. Ошибку можно представлять себе как сердечный приступ, причиной которого может быть нарушение режима питания, происходившее за годы до него. Сердечный приступ служит просто наиболее явственно проявившимся симптомом, а в исправлении нуждается нечто более ранее в процессе. Большинство ошибок вызывается ложными предположениями: мы предполагаем, что правильно ввели имя переменной, хотя это не так, или что в текстовом поле находятся числовые данные, а их там нет. Путем выполнения ряда предложений trace( ), команд отладчика или команды List Variables можно сравнить наши предположения с тем, как интерпретатор воспринимает наш код.

Вот, например, код, содержащий ошибку. Он ошибочно присваивает переменной status строку "equal":

var x = 11;
isTen(x);
function isTen(val) {
  if (val = 10) {
    status = "equal";
  }
}

Чтобы выяснить, что неверно в коде, сравним предполагаемое действие кода с тем, что он делает в действительности, двигаясь вперед по шагам:

// Переменная x должна быть равной 11
var x = 11;
 
// Посмотрим, происходит ли это в действительности
trace(x);     // Выводит: 11
 
// Здесь должна быть вызвана функция isTen( )
isTen(x);
 
// Теперь обратимся к нашей функции
function isTen(val) {
  // Проверим, действительно ли функция вызывается
  trace("Функция isTen вызвана");    // Выводит: "Функция isTen вызвана"
 
  // Проверим, правильно ли передан параметр
  trace("Параметр val равен " + val);       // Выводит: "Параметр val равен 11"