![]() |
Я пишу отвратительный код. Что делать?
Доброго дня. Вопрос о методологии наверное.
Новичок, никак не догоню логику построения нормальных, красивых Flash-приложений. Дело в том, что объектная модель приложения (как правило) не стыкуется с моделью отображения. Из-за этого приходится хранить ссылки на объекты в глобальных переменных, объявлять публичными функции и переменные, которые должны быть защищёнными, создавать листенеры, логика работы которых не соотвествует логике взаимоотношений объектов и заниматься прочим непотребством, за которые в обычном программировании ставят к стенке. Думал понимание придёт с начальным опытом.... Не, не выходит каменный цветок... Подскажите пожалуйста - как лучше организовывать проект, если взаимоотношения объектов в сцене не соотвествует логике объектов приложения. Пример: Логика приложения:
Логика отображения:
Проблемы: 1. Планировка квартиры должна осуществлять навигацию по этажу, хотя в теории дочерние элементы не обязаны знать о своих владельцах. Приходится хранить ссылку на владельца или пользоваться пользовательскими событиями, чтобы возбудить этаж к жизни. 2. Планировки этажей повторяются - на каждом этаже выгодно использовать один и тот же графический элемент отображения. Дуплицировать тяжёлый объект смысла нет. Храню ссылку в объекте этажа, отображаю её на экране. Это создаёт сложности с квартирами внутри этажа - при переключении приходится проводить реинициализацию всего содержимого этажа в зависимости от содержимого конфига (продано\не продано). 3. При наведении мышой на квартиру отображается метка, которая может пересекаться с квартирой - мышь на метке - происходит ROLL_OUT с квартиры, если цеплять метку ребёнком к квартире, то метка начинает наследовать свойства отображения (например прозрачность), чего не хочется. И так далее и тому подобное. Понятно, что в частностях и всякими "извратами" это можно решить, но как быть в глобальном смылсе?! Какая-то система, методология, идеология в конце концов... Всё скатывается к куче кода, в котором 20% смысла и 80% учёта особенностей Помогите, не дайте пропасть. Господа, у кого опыт не одного проекта, поделитесь идеями пожалуйста!!! p. s. Переделка проектов с нуля не даёт радостного ощущения, что "всё правильно". p. p. s. примеры курил, книги прочитал, первые приложения написал, с ООП, UML и прочими матными словами знаком на практике. |
А про MVC тоже читали?
|
Мне однажды доводилось решать именно такую задачу, как вы описали. В итоге вышел так себе монстрик :)
http://gaen.office.goodgear.ru/lulz/tigo.swf Стучите в аську, помогу чем смогу. |
GAIKER, для интереса посмотрел вашу флешку - аж три РТЕ вылезло:
Код:
SecurityError: Error #2122: Нарушение изолированной среды: Loader.content: http://gaen.office.goodgear.ru/lulz/tigo.swf не может осуществить доступ к http://laganaki-s-e.ru/images/2a/c3/41/56172a93ef5e.jpg. Необходим файл политики, но, когда были загружены эти мультимедийные данные, флаг checkPolicyFile не был установлен. |
КорДум, это еще не лазил дальше :)
Blax, тут главное отличать общее от частного, что есть объект и пр. Вот к примеру - дом - это объект - экземпляр класса Дом. В нем этажи - их количество это свойство данного объекта. При этом каждый этаж - тоже экземпляры класса, каждый знает о своем содержимом, но ему до фени, на каком он этаже. По домам и этажам помню у Мука еще было. А вообще очень хорошо помогают всплывающие пользовательские события |
КорДум, вы правы, за такое должно быть стыдно :)
Эта флэшка вырвана из своего контекста и сохранена на память. Она тягает картинки с другого домена, отсюда и ошибки. Кстати, текст ошибки помог вспомнить, где лежит оригинал, который ошибок не кидает: http://laganaki-s-e.ru/flash/tigohouse.swf |
Так лучше (:
Жаль, что текст выделить нельзя, почему убрали выделение? Blax, По ссылке, что вам дал Bgg первым постом идет PsychoTiger, загляните к нему в блог, он писал подробные и занимательные статейки про MVC. |
КорДум, насяльника сказал, я сделал)
|
Ага... :)
1. Огромное спасибо!!!
2. MVC не курил, но слышал, спасибо за наводку. 3. Пользовательские события штука юзабельная, но в данном случае не очень приятная, надо писать дестроеры объектов и слушателей, следить за подчисткой листенеров, всё это как раз то, от чего хотелось бы уйти. Получается нечто похожее на тарелку со спагетти - много связей для простого дела. 4. Выходные это +6 часов сна, посему с утра пришла мысль (ого, редкость :) ): что если разделить модель визуальную и модель логики приложения? То есть TanaTiX как раз описывает модель приложения, а параллельно к ней создать иерархию полностью независимую отображения с торчащими ручками, за которые можно дёргать. Или даже пойти дальше - универсальный конвейер(ы) событий (не тех, которые встроены в язык), нечто вроде общей шины для обмена событиями и данными внутри некой формации объектов. Регистрировать в нём объекты и события и использовать. Быть может это велосипед конечно... И время займёт чтобы сделать, но... Ещё раз спасибо огромное, пойду посмотреть, что за зверь MVC :) |
Цитата:
|
| Часовой пояс GMT +4, время: 02:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.