ДействиеСценарий / Говнокод #9987 Ссылка на оригинал

0

  1. 1
var allInteractiveItems : Array = ItemSearchHelper.join(ItemSearchHelper.join(ItemSearchHelper.sortById(_worldInfo.itemsInteractive), ItemSearchHelper.sortById(GameInfo.instance.items)), ItemSearchHelper.sortById(GameInfo.instance.itemsInteractive)).concat(ItemSearchHelper.sortById(_worldInfo.items));

Оптимизнула к концу рабочего дня...

Запостил: kyzi007 kyzi007, (Updated )

Комментарии (21) RSS

    • Да нет, руками...
      Дело еще в том что так спрятался офигенно хитрый фортель со слиянием инфы.
      Ответить
      • > Да нет, руками...
        шаловливые ручки... за такое их линейкой надо

        я, конечно, люблю инлайн без промежуточных результатов, но тут пока проскроллишь до конца, запутаешься в скобочках, с кем у них джойн, кого конкатят, перед этим отсортировав по ИДу...
        Ответить
        • >люблю инлайн без промежуточных результатов, но тут пока проскроллишь до конца
          Так код нормально надо форматировать.
          И я не знаю какие есть импорты в AS.
          Но тут уж точно слишком много ItemSearchHelper и какой-нить import static совсем не будет лишним.

          var allInteractiveItems : Array = ItemSearchHelper.join(ItemSearchHelper.join(
          	ItemSearchHelper.sortById(_worldInfo.itemsInteractive),
                  ItemSearchHelper.sortById(GameInfo.instance.items)),
           	ItemSearchHelper.sortById(GameInfo.instance.itemsInteractive)
          ).concat(
          	ItemSearchHelper.sortById(_worldInfo.items)
          );

          Поэтому ограничение терминалов в 80 строк очень верное.
          Ответить
          • а вот так действительно понятнее, спасибо

            > Поэтому ограничение терминалов в 80 строк очень верное.
            это чтобы на рулоне умещалось в эпоху 16:9 число может быть и 120
            Ответить
          • Статических импортов нет, но можно было сделать так:
            var sortBy:Function = ItemSearchHelper.sortById;
            var allInteractiveItems : Array = ItemSearchHelper.join(ItemSearchHelper.join(
            	sortById(_worldInfo.itemsInteractive),
                    sortById(GameInfo.instance.items)),
             	sortById(GameInfo.instance.itemsInteractive)
            ).concat(
            	sortById(_worldInfo.items)
            );

            Или, если хотелось еще короче и без потери типизации:

            var allInteractiveItems:Array;
            with (ItemSearchHelper)
            {
                with (GameInfo.instance)
                {
                    allInteractiveItems =
            	    join(join(sortById(_worldInfo.itemsInteractive),
            	    sortById(items),
            	    sortById(itemsInteractive).concat(_worldInfo.items));
                }
            }

            Но это чревато неразберихой с областями видимости.

            Но, что-то мне подсказывает, что:

            var allInteractiveItems:Array =
                [_worldInfo.itemsInteractive,
                GameInfo.instance.items,
                GameInfo.instance.itemsInteractive,
                _worldInfo.items];
            for each (var array:Array in allInteractiveItems)
                ItemSearchHelper.sortById(array);

            Делало бы то же самое. Потому, что есть подозрение, что join и concat делают одно и то же, а от повторного вызова join скорее всего ничего не меняется 🙂
            Ответить
            • >var sortBy:Function = ItemSearchHelper.sortById;
              Так это гораздо лучше чем импорты.

              >Но, что-то мне подсказывает, что:
              Тоже так подумалось, когда форматнул его. Но не забывай - они любят одной строкой.
              for each (var array:Array in [
              	_worldInfo.itemsInteractive,
              	GameInfo.instance.items,
              	GameInfo.instance.itemsInteractive,
              	_worldInfo.items
              ]) ItemSearchHelper.sortById(array);
              Ответить
            • Нет, в тех массивах автогенеренные из протокола валидаторы json и при слиянии из второго массива подтягиваются такие же элементы и сливаются.
              Это все сцуко серверная оптимизация - одни и те же данные приходят в трех фазах - статический файл который не генерится, кешируется и динамически гонится рантайм по сокету.
              Поэтому я и говорю что там хитрый фортель.
              Ответить
              • Написала и сама себя не поняла )
                1 пак инфы - статика.
                2 - кеш.
                3 - динамика.
                Собственно формируется информация для отрисовки сцены (игра, да).
                Ответить
  • А можно перед постингом сюда разбить код на строки?
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8