Показать сообщение отдельно
Старый 12.03.2008, 14:32
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 11  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Attention Исправление ошибки

Вначале проанализируем ошибку.
Переменная hasRotate объявлена в методе с типом Boolean, а в строке кода, которая дает ошибку, ей присваивается значение int.
Далее мы смотрим как используется эта переменная. Мы не будем доверять нашей внимательности, а пройдемся поиском по коду. Ищем вхождения слова "hasRotate" начиная со строки с ошибкой. Вхождение лишь одно и оно совсем рядом с ошибочной строкой. Это еще одна удача: изменения, которые сделаем будут локальны.
Смотрим, как используется переменная: с ее помощью производится проверка на наличие вхождений слова rotate.
В принципе, в таких случаях есть два пути: либо создание новой переменной и дальнейшая работа уже с ней, либо изменение кода таким образом, чтобы переменная использовалась правильно.
К первому решению чаще прибегают в случае, если изменение логики дальнейшей проверки нежелательно или затруднительно. Поскольку способ решения выбирается исходя из критерия минимального внесения изменений и у нас нет показаний за первое решение, поэтому прибегнем ко второму.
Продублируем две строки, начиная со строки с ошибкой, одну пару закомментируем и пока оставим на память. Вторую строку изменим.
Вот, что у меня получилось:
Код AS3:
// hasRotate = getAttribute(node, "transform").indexOf("rotate");
// if (hasRotate > -1) {
hasRotate = getAttribute(node, "transform").indexOf("rotate") > -1;
if (hasRotate) {
Компилируем проект, убеждаемся в том, что и Flash компилятор к нашим изменениям отнесся благосклонно.

Обратите внимание на еще один момент: хотя логика вполне прозрачна, и мы могли бы вместо > -1 использовать, например != -1 или придумать что-нибудь еще, мы оставляем использованный автором способ, поскольку остальной код пока для нас - потемки и абсолютно быть уверенным в правоте своих действий невозможно.
По этой же причине мы оставляем закомментированные строки с исходным кодом.

На этом процедура исправления ошибки заканчивается, и мы можем вернуться к рефакторингу.
__________________
http://realaxy.com


Последний раз редактировалось iNils; 20.12.2010 в 13:20.