AS3: вопрос производительности, вызывающий функцию события с нулевым параметром - PullRequest
0 голосов
/ 07 мая 2010

В последнее время мне нужно было вызывать функцию слушателя без реального слушателя, например:

foo(null);

private function foo(event:Event):void
{
   //do something
}

Так что мне было интересно, есть ли существенная разница в производительности между этим и использованием следующего, в котором я могу предотвратить пустое значение при вызове функции без слушателя, но все еще могу вызывать ее также со слушателем:

foo();

private function foo(event:Event = null):void
{
}

Я не уверен, что это просто вопрос стиля или на самом деле плохая практика, и я должен написать две одинаковые функции, одну с параметром события, а другую без параметра (что мне кажется громоздким).

Ждем ваших мнений, спасибо.

Ответы [ 2 ]

2 голосов
/ 07 мая 2010

Как указывалось в bitc, разницы нет. Обратите внимание, что это только в случае строго типизированных вызовов, когда компилятор может определять аргументы по умолчанию во время компиляции и фактически включать значение по умолчанию в качестве параметра.

Когда вызовы нетипизированы, игрок должен искать аргументы по умолчанию во время выполнения, что требует некоторой скорости, но, вероятно, не должно быть слишком большим по сравнению со всеми проверками / приведениями типов во время выполнения, которые необходимо выполнять в таких кейс.

Однако это не такая хорошая практика. Вы должны разделить его на две функции. Тот, который получает событие и извлекает из него необходимые данные, а затем передает его другой функции, которая фактически обработает его. Фактическая логика в этой функции становится более пригодной для повторного использования. Кроме того, рефакторинг становится проще, поскольку вы можете просто переместить функцию (как в pull up ), не нарушая код. Не в последнюю очередь, это четко разделяет ответственность.

Конечно, если какой-либо фактический ответ на событие не обрабатывает событие и не является слишком сложным, то расщепление немного преувеличивается.

Greetz
back2dos

0 голосов
/ 07 мая 2010

Эти два компилируются в один и тот же байт-код. Я проверил с бинарным diff.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...