|
|
|||||
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
Организация работы событий
Здравствуйте.
Интересует следующий вопрос, скорее даже нюанс проектирования приложений: 1) Допустим, у нас есть какой-то объект, который генерирует большое количество событий (больше 10). 2) Большинство из этих событий однотипные и через эти события не должны передаваться параметры. 3) Через некоторые события должны передаваться параметры, которые неотрывно привязаны к событию. Под параметрами, в данном контексте, я понимаю public переменные, которые можно считывать наподобие свойств target и/или delta у MouseEvent. Возникает вопрос: что делать, создавать 10 классов для каждого типа событий, каждое событие которого бы обладало только теми параметрами (читай открытыми свойствами), которые принадлежат к данному типу события, или целесообразней, в целях «не плодить большого количества классов и сэкономить время» сделать 1 класс события, указать в нём все свойства, которые могут быть необходимы для событий и устанавливать значения только для тех событий, которые будут нужны в каждом конкретно случае? Я, пока, склоняюсь ко 2-му способу, ведь, на сколько я понимаю, даже в MouseEvent сделано таким образом, что свойство delta доступно и при событиях CLICK, MOUSE_DOWN и т.п., хотя фактически оно необходимо только у события MOUSE_WHEEL. Но с другой стороны, все нюансы по работе событий будут известны мне, но другие люди, которым, возможно, придётся столкнуться с моими событиями, будут недоумевать, почему в одном случае есть информация об одних переменных, а в другом её нет. Вот такие вот дела. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Сомнительно.
А я дурак, я делаю одно событие с var info:Object={} куда пишу всё что сдумается. На самом деле просто посмотри, что ты там передаешь с событием. Например, количество игроков онлайн, открытые двери и год после рождества Христова. По сути, 3 разных переменных - totalOnline, openDoors, year, но ведь можно передать просто intValue, а в комментариях написать мол "а тут нам приходит..."
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
2 PsyhoTiger:
Мне кажется ваш подход в корне не правилен. Цитата:
Плюс непонятные названия переменных будут усиливать неразбериху. 2 fljot: Цитата:
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Да.
Какие плюсы я вижу: типизация и использование одного события для многих задач. В коде: private function eventHandler(event:MyEvent):void{ //ожидаем с событием количество единиц дерева super.totalWood=event.intValue; } Я не говорю, что мой вариант лучший - но он вполне имеет право на жизнь. Но, как я уже сказал, я всё равно пользуюсь одним Object`ом )
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
Каждому — своё, но мне кажется, что вариант с object, в этом случае, не имеет права на жизнь (я понимаю, что это звучит категорично, но мне кажется, что хорошо когда нам компилятор будет сам подсказывать, к каким переменным можно обратиться, а к каким — нет + хорошие названия переменных улучшают читабельность кода).
Такие моменты, на мой взгляд, становятся важны когда работаешь в команде или создаёшь что-то, чем будут пользоваться другие люди, если работаешь один, то на это можно забить, но это не значит, что так нужно/следует поступать. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Досточно public-ов. От геттеров проку нет, событие всё равно клонируется постоянно.
|
|
|||||
Клонируется то клонируется, но это при бабблинге или в разных обработчиках. Но ведь можно изменить данные, если кто-то его передиспатчит, или внутри одного обработчика, или при передаче ("по ссылке") куда-то.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
И что? Если вы хотите наступить на грабли, вы на них наступите. Причем самостоятельно.
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Да, etc прав. Вся инкапсуляция и тому подобное было сделано ради защиты от дураков. Защиты от идиотов же не существует. Я найду способ сломать событие и с геттерами. Например, остановлю его.
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 23:13. |
|
« Предыдущая тема | Следующая тема » |
Теги |
flash , Лень , Проектирование , события |
|
|