![]() |
|
||||||||||
|
|||||
|
ветеран форума
|
гм, if-ы в бизнес-логике особо не позаменяешь. Часто можно применить Стратегию(Strategy), но в AS это не самый удобный паттерн, из-за отсутствия перегрузки функций в первую очередь. Плохой тон - это множественные точки выхода из функций, разложенные по if-ам.
__________________
4am is time to rock |
|
|||||
|
Ну гм... 5 Проверок значения переменной a:
или Мне последний более понятен - я читаю строчку - я ВИЖУ имя переменной, не смотря вверх - и читаю код более быстро. Это в примере выше все просто, а если команд много - то найти свич - это какое то время, а после нужно вернуться в место case`а. Если есть прокрутка кода (т.е. кода этих условий больше, чем на один экран) - это тратит время, согласитесь. Но как сказал __etc, раз в байткоде это и есть тонны if`ов, то беспокоиться нечего) Вдогонку: оператор ? тоже рассматривается как if/else? И кстати проверяет он условия все сверху вниз? Т.е. наиболее вероятные исходы при if/else if следует разместить в самом первом if, чтобы он не просчитывал остальные? Ну и ещё вдогонку: есть переменные a и b, оба булевы. Я пишу: но могу ведь и Теперь мне интересно, если a=false, то во 2 случае проверка b вообще производиться не будет. А в 1 случае будет? Если нет - это ведь какая никакая экономия CPU =)
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
С учётом того что оператор ? работает быстрее чем if, то нет.
Нет, не будет. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В первом случае тоже не будет проверяться.
Что касается операторов и switch/if, то смотрим: На выходе: _as3_pushbyte 5 _as3_iffalse offset: 7[#10] _as3_pushbyte 10 _as3_convert_d _as3_jump offset: 3[#12] #10 _as3_pushbyte 8 _as3_convert_d #12 _as3_convert_d _as3_setlocal <1> _as3_pushbyte 5 _as3_iffalse offset: 8[#11] _as3_pushbyte 10 _as3_convert_d _as3_setlocal <1> _as3_jump offset: 4[#14] #11 _as3_pushbyte 8 _as3_convert_d _as3_setlocal <1> Теперь switch/if: switch (a) { case 4: trace(4); case 10: trace(a); break; case 8: trace(a); break; default: trace(a); } #14 _as3_jump offset: 41[#34] _as3_label _as3_findpropstrict trace _as3_pushbyte 4 _as3_callpropvoid trace(param count:1) _as3_label _as3_findpropstrict trace _as3_getlocal <1> _as3_callpropvoid trace(param count:1) _as3_jump offset: 94[#57] _as3_label _as3_findpropstrict trace _as3_getlocal <1> _as3_callpropvoid trace(param count:1) _as3_jump offset: 83[#57] _as3_label _as3_findpropstrict trace _as3_getlocal <1> _as3_callpropvoid trace(param count:1) _as3_jump offset: 72[#57] #34 _as3_getlocal <1> _as3_setlocal <2> _as3_pushbyte 4 _as3_getlocal <2> _as3_ifstrictne offset: 6[#41] _as3_pushbyte 0 _as3_jump offset: 38[#55] #41 _as3_pushbyte 10 _as3_getlocal <2> _as3_ifstrictne offset: 6[#46] _as3_pushbyte 1 _as3_jump offset: 25[#55] #46 _as3_pushbyte 8 _as3_getlocal <2> _as3_ifstrictne offset: 6[#51] _as3_pushbyte 2 _as3_jump offset: 12[#55] #51 _as3_jump offset: 6[#54] _as3_pushbyte 3 _as3_jump offset: 2[#55] #54 _as3_pushbyte 3 #55 _as3_kill <2> _as3_lookupswitch -66(3)[-96, -88, -77, -66] if (a === 4) trace(4); if (a === 4 || a === 10) { trace(a); } else if (a === 8) { trace(a); } else { trace(a); } #57 _as3_getlocal <1> _as3_pushbyte 4 _as3_ifstrictne offset: 7[#63] _as3_findpropstrict trace _as3_pushbyte 4 _as3_callpropvoid trace(param count:1) #63 _as3_getlocal <1> _as3_pushbyte 4 _as3_strictequals _as3_dup _as3_iftrue offset: 5[#72] _as3_pop _as3_getlocal <1> _as3_pushbyte 10 _as3_strictequals #72 _as3_iffalse offset: 10[#77] _as3_findpropstrict trace _as3_getlocal <1> _as3_callpropvoid trace(param count:1) _as3_jump offset: 23[#87] #77 _as3_getlocal <1> _as3_pushbyte 8 _as3_ifstrictne offset: 10[#84] _as3_findpropstrict trace _as3_getlocal <1> _as3_callpropvoid trace(param count:1) _as3_jump offset: 6[#87] #84 _as3_findpropstrict trace _as3_getlocal <1> _as3_callpropvoid trace(param count:1) |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
_etc, научите меня, неуча этому кунгфу
![]() |
|
|||||
|
Ммм, __etc, Спасибо.
Только вот: Цитата:
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Да без разницы, на самом деле. Если она и есть, то настолько мизерная, что можно пренебречь. Я бы воспользовался первым, если выражение не очень сложное.
r_r_f_r, сначала надо получить черный пояс ![]() |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
Ну чёрный пояс в виде спецификации мне помогает, но что за буковки у тебя написаны, для меня загадка, и они подробней
, подскажи на какой полке бляха чудо пояса лежит![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Да вообще-то это Sothink SWF Decompiler показывает.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:36. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|