Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Перлы кодогенерации (http://www.flasher.ru/forum/showthread.php?t=133549)

wvxvw 08.12.2009 02:51

Перлы кодогенерации
 
Код AS3:

if (flash.net.getClassByAlias("foo.bar.VO") == null){
          flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);}
      } catch (e:Error) {
          flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO); }

Естесственно, Flex.
В английском есть такое выражение: Third time - the miracle... Как-то они не до конца воплотили идею, чтоли...

gloomyBrain 08.12.2009 03:56

Вопрос: как объяснить близким, что тебя улыбнуло, если ты читаешь программный код? =)
Я в тупике

wvxvw 08.12.2009 04:42

ОК, по пунктам:
getClassByAlias - может выкинуть ошибку если класс не зарегистрирован, но тогда зачем нам в трай пихать еще и рeгистацию?
registerClassAlias - может выкинуть ошибку, но только если один из параметров равен нулю, но мы эту ошибку все равно не обработаем т.как мы повторяем ту же процедуру в кетч-блоке.
Выводы: мне очень слабо верится в вероятность зарегистрировать один и тот же класс для одного и того же алиаса дважды...
Но, даже, если такое возможно, и это баг плеера, то нам достаточно поставить только getClassByAlias в трай блок - регистрации там явно нечего делать. т.как ошибка будет только в случае, если мы еще не зарегистрировались, и в таком случае мы попадем в кетч-блок, и зарегистрируемся себе спокойно...
А вообще, если по большому счету - проверка и трай-кетч там вообще ни к чему...

divinus 08.12.2009 12:21

wvxvw, ви таки не знали что существует специальный ресурс? :) http://govnokod.ru/actionscript3

gloomyBrain, если вас не улыбнул подобный изврат, сожалею, но я думаю вы сами склонны написать такое. вывод один - набираться опыта :)

wvxvw 08.12.2009 14:23

Я там не зарегистрирован, и лень как-то...
А, и, это, для так сказать закрепления эффекта и надежности, я бы добавил еще пару строчек ;)
Код AS3:

try
{
        if (flash.net.getClassByAlias("foo.bar.VO") == null)
        {
                flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
        }
}
catch (e:Error)
{
        flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}
finally
{
        // Да шож такое!?
        flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}


iflamberg 08.12.2009 15:18

вполне достойно выкладывания на *****код

divinus 08.12.2009 18:22

wvxvw, а можно еще так:
Код AS3:

while(flash.net.getClassByAlias("foo.bar.VO") == null) {
try{
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}catch (e:Error)
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}finally{
// Да шож такое!?
flash.net.registerClassAlias("foo.bar.VO", foo.bar.VO);
}
}


gloomyBrain 08.12.2009 21:29

Цитата:

gloomyBrain, если вас не улыбнул подобный изврат, сожалею
divinus, сожалею, что Вы сожалеете, но как бы улыбнуло, и не знаю с чего у Вас мысли об обратном. И *****код я писать не склонен (по крайней мере мне самому так кажется).


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

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