Показать сообщение отдельно
Старый 17.12.2010, 17:40
Blax вне форума Посмотреть профиль Отправить личное сообщение для Blax Найти все сообщения от Blax
  № 1  
Ответить с цитированием
Blax

Регистрация: Dec 2010
Сообщений: 8
По умолчанию Я пишу отвратительный код. Что делать?

Доброго дня. Вопрос о методологии наверное.

Новичок, никак не догоню логику построения нормальных, красивых Flash-приложений.

Дело в том, что объектная модель приложения (как правило) не стыкуется с моделью отображения.
Из-за этого приходится хранить ссылки на объекты в глобальных переменных, объявлять публичными функции и переменные, которые должны быть защищёнными, создавать листенеры, логика работы которых не соотвествует логике взаимоотношений объектов и заниматься прочим непотребством, за которые в обычном программировании ставят к стенке.

Думал понимание придёт с начальным опытом.... Не, не выходит каменный цветок...

Подскажите пожалуйста - как лучше организовывать проект, если взаимоотношения объектов в сцене не соотвествует логике объектов приложения.
Пример:
Логика приложения:
  • Дом
    -
  • этаж
    --
  • квартира
    ---
  • планировка
  • Метка с информацией о интересуемом объекте

Логика отображения:
  • Дом и селектор этажей
  • Этаж, содержащий квартиры
  • Планировка квартиры

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

2. Планировки этажей повторяются - на каждом этаже выгодно использовать один и тот же графический элемент отображения. Дуплицировать тяжёлый объект смысла нет. Храню ссылку в объекте этажа, отображаю её на экране. Это создаёт сложности с квартирами внутри этажа - при переключении приходится проводить реинициализацию всего содержимого этажа в зависимости от содержимого конфига (продано\не продано).

3. При наведении мышой на квартиру отображается метка, которая может пересекаться с квартирой - мышь на метке - происходит ROLL_OUT с квартиры, если цеплять метку ребёнком к квартире, то метка начинает наследовать свойства отображения (например прозрачность), чего не хочется.

И так далее и тому подобное. Понятно, что в частностях и всякими "извратами" это можно решить, но как быть в глобальном смылсе?!

Какая-то система, методология, идеология в конце концов...

Всё скатывается к куче кода, в котором 20% смысла и 80% учёта особенностей национальной рыбалки модели отображения FLASH.

Помогите, не дайте пропасть.
Господа, у кого опыт не одного проекта, поделитесь идеями пожалуйста!!!


p. s.
Переделка проектов с нуля не даёт радостного ощущения, что "всё правильно".

p. p. s. примеры курил, книги прочитал, первые приложения написал, с ООП, UML и прочими матными словами знаком на практике.