SYStem EXclusive

Я тут пешу - чего же боле…

Говнокод

Вводная - во флеш-ролике в какой-то момент времени компонент оказывается недоступным для родительского контейнера. Проявляется баг непредсказуемо настолько, что за полчаса кликаний не удалось выяснить причину. Причём происходит это в момент инициализации-переинициализации нескольких мувиклипов, флешевого компонента, параллельно твинается анимация.

Как результат - выбрасывается ошибка ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. и приложение встаёт раком.

Что-то подсказало мне, что затронуты настолько тонкие материи, что в исправлении бага я могу провести остаток дня.
Как вариант изобрёл говнокод. Это - AS3, но тут это - неважно, главное - сам принцип.

Actionscript:
  1. // method that break down the application
  2. public function hide():void
  3. {
  4. try
  5. {
  6. removeMenu();
  7. TextField(txtTitle).text = '';
  8. // WTF place - this setter raise error
  9. TextArea(txt).htmlText = '';
  10. } catch (e:Error) {
  11. // russians are not surrender!
  12. // catch error and call them recursively
  13. trace(e);
  14. hide();
  15. }
  16. }

Вкратце - если случается ошибка (примерно 2% вызовов) - рекурсивно вызываем себя снова, на этот раз уже всё ок.
Я бы лично вот за такой код закидывал тухлыми яйцами.
При плохом раскладе его может просто зациклить (в моём случае, правда, это работает на 100%, ну может на 99.и много девяток).
Вот так вот и рождаются байки об индусах.
А зачем я это написал? Так, в порядке самокритики и чиста поржать. А, ну да, раскрашивалку кода потестить.

Leave a Reply