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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
var topItem:Object;
var rowNum:int;
var rowCount:int;
...
else if (!topItem && !rowNum == rowCount)
...

Чтобы не утомлять вас догадками, во что же это превратится и в каком порядке произойдут операции: это условие выполниться только когда:
topItem == null
rowNum != 0
rowCount == 0
Как следует из названий переменных, человек, написавший это ожидал, что количество строк может быть меньше, чем порядковый номер одной из строк...
Взято, опять же из Flex Framework mx.controls::Tree.
Скорее всего автор имел в виду следующее:

else if (!topItem && rowNum !== rowCount)

Но булевые переменные, они ж такие коварные :)

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

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

    • Да, такое условие тоже будет true, но оно бессмысленно, т.как незачем проверять вторую чаcть - нам просто достаточно узнать, что rowNum == 0.
      кроме того, то, что оно включает в себя еще и другую ситуацию - как бы тоже не айс...
      Ну и вообще, там по смыслу имелось в виду другое, т.е. именно != а не !х == у.
      Ответить
    • Да, чтобы не возникало сомнений:
      else if (!topItem && !rowNum == rowCount)
              {
                  parent = collection ? getParentItem(bottomItem) : null;
                  index =  bottomItem ? getChildIndexInParent(parent, bottomItem) : 0;
                  rowNum = 0;
              }

      Т.е. если уж писатель и рассчитывал на то, что условие выполнится только тогда, когда rowNum == 0, то последния строчка вызывает серьезные опасения за него и AS3 в целом 🙂
      Ответить
      • Ну да, согласен.
        Баг, с кем не бывает. Исправят в какой-нибудь из будущих версий.
        Ответить
        • Тогда все равно говнокод - rowNum ^ rowCount 🙂
          Они все равно оба интеджеры и у XOR приоритет выше чем у AND.
          Ответить
  • operator precedence надо либо знать назубок либо пользоваться скобками, ибо воистену...
    Ответить

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

Помни, guest, за тобой могут следить!

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


    8