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

Вернуться   Форум Flasher.ru > Блоги > Идиотизмы

Даже в определениях идиотизма встречается идиотизм.
Цитата:
Идиотизм — устаревшее название идиомы
Идиома в программировании — понятие близкое к понятию шаблона проектирования. Идиомы представляют собой шаблоны проектирования, учитывающие специфику конкретного языка программирования и потому не универсальные. Это хорошие решения проектирования для конкретного языка или программной платформы.
Оценить эту запись

Идиотизмы: кэширование? да ну его!

Запись от BlooDHounD размещена 02.07.2010 в 05:00

вот мне интересно как так устроенно AS3 API, что оно так странно работает?

напрмиер чудесным образом заоптимизированное удаление детей, или странно работающий инкримент.

на ряду с этим у нас есть 2 метода:
getDefinitionByName
getClassByAlias

объясните мне идиоту, почему приходится писать обёртки для этих методов? что в них такого страшного происходит, что приходится делать локальные хэши?
в результате через такой метод всё работает в N раз быстрее:
Код AS3:
function get(name:String):Object {
var result:Object = _hash[ name ];
if ( !result ) {
_hash[ name ] = result = getDefinitionByName( name );
}
return result;
}
в чём ваще проблема сделать это на нативном уровне?

почему эти методы кидают исключение а не возвращают null? и как мне избегать исключения, если у меня нету метода hasDefinition, hasClassAlias?
точнее с дефинишем я, конечно, вру слегка. проверить можно так:
ApplicationDomain.currentDomain.hasDefinition

p.s.: я не любитель try..catch, и всегда стараюсь избегать их используя if..else, если есть такая возможность.
Всего комментариев 6

Комментарии

Старый 02.07.2010 23:47 Яски вне форума
Яски
Привет, чувак!

Вот что там делается:
Пробегается снизу верх по всем ApplicationDomain и ищет класс в их хеш-таблицах.
А зачем делать хеши для этих методов? И выполняется быстрее только вслучае, когда вызывается несколько раз - если вызывается один раз, то так будет медленнее.
Вызывает исключение, потому что это исключительная ситуация, когда нет нужного класса.
Старый 03.07.2010 06:56 BlooDHounD вне форума
BlooDHounD
 
Аватар для BlooDHounD
привет чувак! пишу тебе из далёкой галактики!
Цитата:
Сообщение от Яски
Вот что там делается:
Пробегается снизу верх по всем ApplicationDomain и ищет класс в их хеш-таблицах.
там этого не происходит. getDefinitionByName работает только с ApplicationDomain.currentDoman. по по крайней мере в на моей планете.
Цитата:
Сообщение от Яски
А зачем делать хеши для этих методов? И выполняется быстрее только вслучае, когда вызывается несколько раз - если вызывается один раз, то так будет медленнее.
спасибо Кэп! а я думал, что замедляю для многократного вызова! в преть буду вызывать только один раз. как я сам не додумался до такого?
Цитата:
Сообщение от Яски
Вызывает исключение, потому что это исключительная ситуация, когда нет нужного класса.
надо же ... как очевидно. я тут хотел, что бы мне null возвращался...
Обновил(-а) BlooDHounD 03.07.2010 в 07:03
Старый 03.07.2010 10:07 Яски вне форума
Яски
Цитата:
getDefinitionByName работает только с ApplicationDomain.currentDoman. по по крайней мере в на моей планете.
Если загрузить флешку в домен у которого родительским доменом сделать ApplicationDomain.currentDoman. То в этой флешке ApplicationDomain.currentDoman будет возвращать дочерний домен. А при вызове getDefinitionByName на дочернем домене, нужный класс будет искаться вначале в родительском домене, а потом в дочернем.
Цитата:
спасибо Кэп! а я думал, что замедляю для многократного вызова! в преть буду вызывать только один раз. как я сам не додумался до такого?
Это я к тому, что не всем нужно кеширование этого метода — мне, например ни разу не понадобилось, я максимум вызывал его один раз. Если тебе нужно кеширование, то сделай его! Ведь несложно, да?
Старый 03.07.2010 13:32 BlooDHounD вне форума
BlooDHounD
 
Аватар для BlooDHounD
Цитата:
Сообщение от Яски
Если загрузить флешку в домен у которого родительским доменом сделать ApplicationDomain.currentDoman. То в этой флешке ApplicationDomain.currentDoman будет возвращать дочерний домен. А при вызове getDefinitionByName на дочернем домене, нужный класс будет искаться вначале в родительском домене, а потом в дочернем.
правда? и действительно зачем кэшировать, тот же самый родительский домен ...
Цитата:
Сообщение от Яски
Это я к тому, что не всем нужно кеширование этого метода — мне, например ни разу не понадобилось, я максимум вызывал его один раз. Если тебе нужно кеширование, то сделай его! Ведь несложно, да?
ну мне повезло больше, и я делаю банеры. а замедление от кэширования для однократного вызова ты у себя даже не заметишь.
Обновил(-а) BlooDHounD 03.07.2010 в 14:00
Старый 07.07.2010 14:59 Nirth вне форума
Nirth
 
Аватар для Nirth
А тут забавно ^_^
Старый 28.12.2011 05:23 incvizitor вне форума
incvizitor
 
Аватар для incvizitor
Схожие проблемы есть и у describeType
 

 


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


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