![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
А теперь можно заняться удалением теперь уже ненужных аргументов.
Заменим создание объекта source на присвоение ему this: И тут же тестируем и видим, что происходит переполнение стека. Причина совсем рядом: рекурсивный вызов метода. До тех пор, пока использовались аргументы, в методе создавались новые объекты CubicBezierSVG. А как только перешли на использование this наша невнимательность выползла наружу: мы не добавили объекты, от имени которых рекурсивно вызывается метод getQuadBez_RP. Исправим. Для начала откатимся назад до рабочего состояния: Вот тут-то и проявляется прелесть исправления кода короткими шагами. Протеституем, убедимся, что всё работает. Вот участок кода, который требует вмешательства: getQuadBez_RP (source.start, firstHalf.startControl, firstHalf.endControl, firstHalf.end, k, qcurves); getQuadBez_RP(secondHalf.start, secondHalf.startControl, secondHalf.endControl, source.end, k, qcurves); В этот момент мы должны остановиться и сказать себе: это не рефакторинг. Это действия по изменению логики приложения. К таким действиям мы должны подходить с совсем другими правилами.
__________________
http://realaxy.com Последний раз редактировалось iNils; 20.12.2010 в 13:27. |
![]() |
Часовой пояс GMT +4, время: 17:17. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|