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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.01.2015, 16:01
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 1  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Question Вопос о правильности написания функции

Здравствуйте.
Часто возникает вопрос как правильнее будет... Стоит ли функцию urlLoader_complete выносить как отдельный метод класса? Или лучше оставлять как функцию внутри метода loaderXml ?

Т.е. так ?
Код AS3:
private function loaderXml(e:Event):void {
			var xml:XML;
			var urlRequest:URLRequest = new URLRequest("file.xml");
			var urlLoader:URLLoader = new URLLoader();
			urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
			urlLoader.load(urlRequest);
 
			function urlLoader_complete(e:Event):void {
				xml = new XML(e.currentTarget.data);
				trace(xml);
			}
		}
Или так?

Код AS3:
private var xml:XML;
 
private function loaderXml(e:Event):void {
	var urlRequest:URLRequest = new URLRequest("file.xml");
	var urlLoader:URLLoader = new URLLoader();
	urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
	urlLoader.load(urlRequest);
}
 
private function urlLoader_complete(e:Event):void {
	xml = new XML(e.currentTarget.data);
	trace(xml);
}
__________________
кто не отвечает, того garbage collector забирает

Старый 24.01.2015, 16:16
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Или так.

Старый 24.01.2015, 16:18
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 3  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Имхо лучше отдельным методом. т.к. в будущем может потребоваться повторить выполнение всей логики после загрузки без самой загрузки.Тогда просто вызываешь метод окончания загрузки и скармливаешь ему ранее загруженные данные.Такая ситуация может быть, например, в играх когда юзер нажал рестарт.

Старый 24.01.2015, 16:38
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 4  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Не знаю почему, но все вокруг говорят, что функция в функции - ужасно плохо. Да и не смотрится.
Мне только не нравится момент, как у вас метод называется. Существительное)
__________________
There is no thing in this world that is not simple.

Старый 24.01.2015, 17:02
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 5  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Дело тут не в "плохо/хорошо", "потребуется повторить выполнение логики/не потребуется",
а в том, что внутренние функции - это то же самое, что анонимные.

Это очень плохо для производительности - вот и всё

Старый 24.01.2015, 18:30
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Это очень плохо для производительности - вот и всё
Почему? Как это влияет на производительность?

п.с. Я лично делаю анонимные функции только для колбэков. Но по-моему, это лишь дело вкуса. За исключением описанного в 3 посте

Старый 24.01.2015, 22:43
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 7  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
Почему? Как это влияет на производительность?
Основные минусы перечислены тут.
__________________
http://www.chessmax.ru

Старый 25.01.2015, 01:12
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 8  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
не уметь программировать вообще очень плохо для производительности, вот и все.

у анонимной функции в плане скорости проблема только в том, что механизм замыканий требует пересоздавать функцию каждый раз.

например
Код AS3:
while(expression){
  (function(..){..})()
}
функция будет создаваться каждый раз.

имхо все равно что жаловаться на то, что new <Object>[{},....] каждый раз создает новый вектор.

код
Код AS3:
vector.map(function(element:Objec, index:uint, vec:Vector.<Object>):Object{
  return {};
});
работает не медленнее, чем если бы с методом. хотя в любом случае inline map может работать до 20 раз быстрее, чем какие то методы

Старый 25.01.2015, 02:04
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
Не знаю почему, но все вокруг говорят, что функция в функции - ужасно плохо. Да и не смотрится.
Так не с балды же говорят. GC - всему виной прочитайте про него и все станет понятно.
По сути - ничего плохого нет. Пишите если надо - но в highLoad приложениях - вы сразу почуствуете разницу. С другой стороны - пока вы не пишите ничего такого, то вам и знать не положено, плохо или хорошо, а когда начнете - скорее всего такой вопрос у вас просто не зародится
__________________
Марк Tween

Старый 25.01.2015, 13:41
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 10  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
не уметь программировать вообще очень плохо для производительности, вот и все.
Не уметь писать без анонимных функций плохо, да, согласен

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

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

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


 


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


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