![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Вначале проанализируем ошибку.
Переменная hasRotate объявлена в методе с типом Boolean, а в строке кода, которая дает ошибку, ей присваивается значение int. Далее мы смотрим как используется эта переменная. Мы не будем доверять нашей внимательности, а пройдемся поиском по коду. Ищем вхождения слова "hasRotate" начиная со строки с ошибкой. Вхождение лишь одно и оно совсем рядом с ошибочной строкой. Это еще одна удача: изменения, которые сделаем будут локальны. Смотрим, как используется переменная: с ее помощью производится проверка на наличие вхождений слова rotate. В принципе, в таких случаях есть два пути: либо создание новой переменной и дальнейшая работа уже с ней, либо изменение кода таким образом, чтобы переменная использовалась правильно. К первому решению чаще прибегают в случае, если изменение логики дальнейшей проверки нежелательно или затруднительно. Поскольку способ решения выбирается исходя из критерия минимального внесения изменений и у нас нет показаний за первое решение, поэтому прибегнем ко второму. Продублируем две строки, начиная со строки с ошибкой, одну пару закомментируем и пока оставим на память. Вторую строку изменим. Вот, что у меня получилось: // hasRotate = getAttribute(node, "transform").indexOf("rotate"); // if (hasRotate > -1) { hasRotate = getAttribute(node, "transform").indexOf("rotate") > -1; if (hasRotate) { Обратите внимание на еще один момент: хотя логика вполне прозрачна, и мы могли бы вместо > -1 использовать, например != -1 или придумать что-нибудь еще, мы оставляем использованный автором способ, поскольку остальной код пока для нас - потемки и абсолютно быть уверенным в правоте своих действий невозможно. По этой же причине мы оставляем закомментированные строки с исходным кодом. На этом процедура исправления ошибки заканчивается, и мы можем вернуться к рефакторингу.
__________________
http://realaxy.com Последний раз редактировалось iNils; 20.12.2010 в 13:20. |
![]() |
Часовой пояс GMT +4, время: 08:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|