![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Блок кода if (hasTransform) аналогичными действиями превращается в метод:
private function getRotation(node : XMLNode) : Number { // parse for rotation specification // hasRotate = getAttribute(node, "transform").indexOf("rotate"); // if (hasRotate > -1) { var hasRotate:Boolean = getAttribute(node, "transform").indexOf("rotate") > -1; if (hasRotate) { var startRotate:Number = getAttribute(node, "transform").indexOf("("); var endRotate:Number = getAttribute(node, "transform").indexOf(")"); return parseInt(getAttribute(node, "transform").substr(startRotate + 1, endRotate - startRotate)); } return 0; } В этом месте я отметил для себя странность: переменная rotation локальна, мы ее присваиваем, но нигде не используем. Перенесем ее объявление ближе к присвоению и всё вместе закомментируем: // var rotation:Number; // if (hasTransform) { // rotation = getRotation(node); // } else { // rotation = 0; // } Рефакторинг в этом смысле очень похож на ситуацию, когда мы берем груду запчастей и начинаем их все раскладывать по полочкам, иногда вытирая пыль. В этом процессе нам достаточно в общем виде представлять зачем запчасть нужна, при этом нас совершенно не заботит как именно она делает свое дело. Процесс рефакторинга не изменяет логику приложения, но, в итоге, дает нам возможность впоследствии сделать это точечно, сосредоточившись на изменении логики небольших методов. Просто сравните каким был метод extractCommands и каким он стал сейчас. В данный момент его логика прозрачна и понятна. Логика каждого из вынесенных методов не требует семи пядей во лбу и может быть легко изменена или оптимизирована, если такая потребность возникнет.
__________________
http://realaxy.com Последний раз редактировалось iNils; 20.12.2010 в 13:35. |
![]() |
Часовой пояс GMT +4, время: 21:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|