Даже в определениях идиотизма встречается идиотизм.
Цитата:
Идиотизм — устаревшее название идиомы
Идиома в программировании — понятие близкое к понятию шаблона проектирования. Идиомы представляют собой шаблоны проектирования, учитывающие специфику конкретного языка программирования и потому не универсальные. Это хорошие решения проектирования для конкретного языка или программной платформы.
Идиома в программировании — понятие близкое к понятию шаблона проектирования. Идиомы представляют собой шаблоны проектирования, учитывающие специфику конкретного языка программирования и потому не универсальные. Это хорошие решения проектирования для конкретного языка или программной платформы.
Идиотизмы: кэширование? да ну его!
Запись от BlooDHounD размещена 02.07.2010 в 05:00
вот мне интересно как так устроенно AS3 API, что оно так странно работает?

напрмиер чудесным образом заоптимизированное удаление детей, или странно работающий инкримент.
на ряду с этим у нас есть 2 метода:
getDefinitionByName
getClassByAlias
объясните мне идиоту, почему приходится писать обёртки для этих методов? что в них такого страшного происходит, что приходится делать локальные хэши?
в результате через такой метод всё работает в N раз быстрее:
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
Комментарии
![]() ![]() |
|
привет чувак! пишу тебе из далёкой галактики!
Цитата:
Сообщение от Яски
Вот что там делается:
Пробегается снизу верх по всем ApplicationDomain и ищет класс в их хеш-таблицах. Цитата:
Сообщение от Яски
А зачем делать хеши для этих методов? И выполняется быстрее только вслучае, когда вызывается несколько раз - если вызывается один раз, то так будет медленнее.
Цитата:
Сообщение от Яски
Вызывает исключение, потому что это исключительная ситуация, когда нет нужного класса.
|
|
Обновил(-а) BlooDHounD 03.07.2010 в 07:03
|
![]() ![]() |
|
Цитата:
Сообщение от Яски
Если загрузить флешку в домен у которого родительским доменом сделать ApplicationDomain.currentDoman. То в этой флешке ApplicationDomain.currentDoman будет возвращать дочерний домен. А при вызове getDefinitionByName на дочернем домене, нужный класс будет искаться вначале в родительском домене, а потом в дочернем.
Цитата:
Сообщение от Яски
Это я к тому, что не всем нужно кеширование этого метода — мне, например ни разу не понадобилось, я максимум вызывал его один раз. Если тебе нужно кеширование, то сделай его! Ведь несложно, да?
|
|
Обновил(-а) BlooDHounD 03.07.2010 в 14:00
|
![]() ![]() |
|
А тут забавно ^_^
|
![]() ![]() |
|
Схожие проблемы есть и у describeType
|
Последние записи от BlooDHounD
- Обновление blooddy_crypto.swc до версии 0.5.1 (31.03.2016)
- Кто не успел - тот опоздал (19.04.2011)
- Обновление blooddy_crypto.swc до версии 0.3.1 (29.11.2010)
- blooddy_crypto.swc теперь умеет JSON (13.10.2010)
- Загадочный CommaExpression (06.09.2010)