1. ActionScript / Говнокод #10492

    −175

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if (_currentIndex == _instances.length)
      {
        // То помещаем в конец массива, как новый элемент
        _instances[_instances.length] = instance;
      }
      else
      {
        // Помещаем в свободную ячеку массива
        _instances[_currentIndex] = instance;
      }

    Ant. Karlov позаимствовал с flashgamedev. Кто заметит подвох? =)

    Запостил: grin, 31 Мая 2012

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

    • Если выполняется условие (_currentIndex == _instances.length), то строка
      _instances[_instances.length] = instance ничем отличается от строки _instances[_currentIndex] = instance;
      Ответить
      • [:|||||:]
        Даже если конкретно с границами массива не было, то для других случаев - такого навалом.
        Ответить
        • А вы ежа ебали?
          Ответить
          • Хотел всех плюсануть для компенсации, по ошибке кликнул и этот пост. Ладно, ежи тоже люди...

            Насчет кода - можно себе представить ход мысли. Так, если индекс в массиве, надо задать, а если n, то добавить. Как там в массивы добавлять, Add() какой-нибудь? А, просто [n] = .
            Ответить
            • Сомневаюсь, что массив динамический.
              Ответить
              • То есть это еще и не работает? Тогда ой.
                Ответить
                • Да нет, это должно работать. Даже если не динамика, всё равно явного выхода за границы нет.
                  Тут проблема в том, что конструкция
                  if (index == length) {
                      arr[length] = value;
                  } else {
                      arr[index] = value;
                  }
                  Эквивалентна
                  arr[index] = value;

                  И обе они не предохраняют от выхода за границы.
                  Ответить
                  • об этом и шла речь, что условие то бесполезное
                    Ответить
                  • Избыточно - это разумеется. Только вот исходный код, по-видимому, предполагает, что index == length это допустимый случай использования. Поэтому массив должен быть динамическим.
                    Ответить
                  • в AS массивы динамичны, я долго не мог понять о каких границах идет речь.
                    Ответить
                    • А я долго не мог понять, почему они в этом примере его считают динамичным. Так это особенность AS? Тогда всё ясно.
                      Ответить
                      • в наследство от JS
                        Ответить
                      • В основном потому что идет обращение за границами с претензией на добавление. (arr[arr.length] же) . Я, пардон, не знаток ActionScript.
                        Ответить
                        • Но тогда в нём всё равно нет смысла. Вот если бы было _currentIndex >= _inscances.length, то была бы защита.
                          Ответить
            • да я просто тоже решил хуйню сказать, извините =)
              Ответить
    • показать все, что скрытоВСЕМ ПО МИНУСУ, СУКИ!!!
      Ответить
    • да ну, клевый примерчик, но если ты видишь минус, то зачем думать и разбирать его, лучше тоже заминусовать
      Ответить
    • Автор себе коленку прострелил.
      Ответить

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