Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.02.2011, 21:48
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 11  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
А вот мне сразу не понравились эти ServerEvent. Я стараюсь проектировать приложение так, чтобы не зависеть от источника данных. Чего и Вам советую.
Парсер в свои объекты, которые отдаются на растерзание всем желающим? Или как ты делаешь?

@wvxvw, ну switch хренов в плане парсинга чего-то от сервера или другого источника данных, с этим я (месяца как 4 ) согласен. Ну, а в чем другом плох switch? Неужели нет для него той ниши, в которой он лаконичен? )

Старый 28.02.2011, 21:57
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 12  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
wvxvw, вы просто кладезь инфы :о), у меня вопросов кучка.

Цитата:
список классов-сообщений: MessageA, MessageB... MessageZ, все наследуются от Message
у каждого есть метод clone(from:XML):Message который читает содержание из потока и создают свою копию исходя из полученных данных. Прийдется создать по экземпляру (лишнему) каждого сообщения, но, я не думаю, что это прям такая нагрузка, зато удобно.
1) Можно, по идее вместо экземпляра класса, запихнуть классы?
2) Почему бы здесь не использовать Dictionary вместо Object для хранения? Чем Dictionary плох, просто в большинстве примеров на форуме юзают именно объекты в таких случаях.

Цитата:
Ну, а в чем другом плох switch?
Присоединяюсь к вопросу. Ну не считая еще того, что читаемость кода падает (именно в вашем примере).
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 28.02.2011, 22:00
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 13  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
"Object" легче. Если нужен хэш по строкам — то незачем брать танк, надо взять самое минимальное, что удовлетворяет требованиям.

Старый 28.02.2011, 22:04
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 14  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Хм, больше вопросов возникло
Зачем тогда Dictionary? Для хэша по всему остальному? И что значительно тяжелее? А кто быстрее?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 28.02.2011, 22:19
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 15  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Есть функция getSize из flash.samples. Она покажет размер объекта в памяти =) Но внутренние ссылки туда попадают именно как ссылки, 4 байта. Она не рекурсивная, то есть.
Любой объект во флеше наследуется от Object. Даже Dictionary. Поэтому очевидно что Dictionaty тяжелее.
Dictionary может делать то, чего не может Object: принимать в качестве ключей элементы, отличные от строковых. В этом его главное предназначение. Вторичное - наличие weakReference,

Старый 28.02.2011, 22:27
zhoran вне форума Посмотреть профиль Отправить личное сообщение для zhoran Найти все сообщения от zhoran
  № 16  
Ответить с цитированием
zhoran

Регистрация: Dec 2010
Адрес: Химки МО
Сообщений: 95
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Я бы делал так:
список классов-сообщений: MessageA, MessageB... MessageZ, ...
у вас будет таблица, например:
Код AS3:
private static const MESSAGES:Object = { messageA: new MessageA(), messageB: new MessageB() . . . };
Получается, чтобы добавить новое сообщение надо врукопашную редактировать таблицу сообщений, что не совсем удобно. Как бы извернуться, чтобы эта таблица наполнялась сама на этапе компиляции?

Старый 28.02.2011, 22:45
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 17  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
2Psycho Tiger, поэкспериментирую на досуге. Спасибо за инфу.

2zhoran, Котяра вам как раз предлагал вариант этот.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 28.02.2011, 22:52
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 18  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Я вижу два пути.
Первый путь сильно завязан на протоколе передачи данных. Все ключевые зависимые классы реализуют интерфейс IExternalizable. Через этот интерфейс происходит десериализация потока от служб доставки данных, а при необходимости и сериализация объектов с последующей передачей службам (никогда не пользовался сериализацией для отправки на сервер).

Второй путь устраняет зависимость от протокола. Каждый объект десериализуется по правилам, сосредоточенных в конкретном объекте-десериализаторе.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 28.02.2011 в 23:35.
Старый 28.02.2011, 23:15
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 19  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
@dimarik, понятно, спасибо.
2 путь имеется ввиду что-то вроде:
Код AS3:
_serverConnector.deserializator = new SomeServerDeserializator();
...
var response:ServerResponse = _serverConnector.readResponse();
new _someDomain.getDefinition(response.commandName)(response.commandData);
Добавлено через 2 минуты
Цитата:
Сообщение от zhoran Посмотреть сообщение
Получается, чтобы добавить новое сообщение надо врукопашную редактировать таблицу сообщений, что не совсем удобно. Как бы извернуться, чтобы эта таблица наполнялась сама на этапе компиляции?
На самом деле можно пользоваться getDefinition или getDefinitionByName, но тогда придется создавать каждый раз экземпляр класса при ответе от сервера (я не вижу ничего плохого). Однако, проблема будет теперь состоять в том, чтобы вкомпилить эти классы в swf, например, упомянув их в коде явно.

Старый 28.02.2011, 23:20
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 20  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Switch сам по себе не плохой, но почему-то всегда, когда я с ним сталкиваюсь, он не там, где нужно... И это потому, что switch имеет тенденцию повторятся (т.е. если вы видите, что вы делаете свитч по значениям того же энумератора дважды и более раз, или просто по тем же значениям - you are doing it wrong!). Т.е. вы скопипастили какую-то логику, и вы за это поплатитесь, потому, что природа не терпит повторений, и стремится все ее части сделать уникальными Если в switch'е, в каком-нибудь кейсе есть более одной строчки, через месяц там будет красоваться if, а через два логика програмы будет на столько испохаблена, что разобраться почему там теперь вложенный switch уже не реально. Switch располагает к созданию фиктивных конструкций, часто нужных только для того, чтобы switch работал, что, естественно загромождает и замусоривает код. В большинстве случаев кейсы можно вынести во внешние файлы настроек или заменить нормальными методами. Кроме того, иногда switch используется для хранения состояния приложения - за это природа не просто наказывает... за ней еще и суд присяжных может следом добавить... Т.е. для создания супер-надежных программ switch очень плохой помощник. Если вы использовали его вместо того, чтобы создать state и описать в нем, что делает программа при определенных обсоятельствах - не дай бог вам программировать ПО для хирургии... потом к компутеру будет страшно подойти (непридуманная история).
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.