Использовать или не использовать оператор with в AS3? - PullRequest
3 голосов
/ 09 ноября 2010

Итак, сегодня я много читал о производительности оператора, удобочитаемости и тому подобном, но я все еще не уверен, должен ли я использовать оператор with в AS3.оператор with выглядит так же, как и создание локальной переменной, которая будет содержать ссылку.Может кто-нибудь предоставить подробную информацию по этой теме?

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

Я думаю, самая большая проблема with в том, что он не проверен во время компиляции.Любые ошибки будут обнаружены только во время выполнения.Но это помогает чистить код, и мне это немного нравится.Просто знайте, что вы делаете, и это может быть полезно.

2 голосов
/ 09 ноября 2010

Что ж, из моих личных тестов оператор with () на самом деле оказался немного медленнее. Это не имеет большого значения, если вы не пытаетесь выжать из фильма все последние унции производительности. То же самое можно сказать о выполнении циклов for для переменных вместо констант или циклов while и v для циклов. Если вы не составляете эти циклы во множестве итераций, вам не нужно об этом беспокоиться.

Что касается читабельности кода, я думаю, что это делает его более понятным при использовании with (). Все сводится к стилю кодирования. Единственный раз, когда я действительно использую оператор with (), это, скажем, известная цель. Допустим, у вас есть обработчик событий мыши, который выбирает объекты по щелчку и устанавливает его как currentObject. Тогда вы можете иметь функцию, которая делает что-то вроде

with(currentObject)
{
 x = 100;
 y = 100;
 alpha = 0.5;
}

Конечно, вы могли бы сделать это другими способами, но, как я уже сказал. Все сводится к стилю кодирования. Единственная экономия, которую я действительно вижу при использовании этого метода, это сокращение нажатий клавиш по сравнению с делом currentObject.x = 100; currentObject.y = 100;

1 голос
/ 09 ноября 2010

with - чистый синтаксический сахар.

По производительности это явно не оптимизация. Я запускал цикл несколько раз, и он кажется медленнее, чем обычный доступ к атрибутам.

С точки зрения читабельности, я даже не уверен, что выигрыш есть. Я бы предпочел использовать предложение Гранта Скиннера . Но есть случай, когда это может быть полезно: with (event.target as MovieClip), потому что в противном случае потребуется промежуточное объявление переменной.

Вывод: в большинстве случаев не используйте его.

...