Показать сообщение отдельно
Старый 05.12.2016, 13:03   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
[XPP]
TreeNodeTraverser traverser = new TreeNodeTraverser(TreeNode::findNode('\Menu Items'));
собственно вопрос у меня и родился после того, как заглянул в TreeNodeTraverser.
мне кажется, что он не оптимально написан.

В принципе понятно что делают - рекурсивный спуск вытягивают в одну итерацию.
Но за счет какого-то левого встроенного класса TreeNodeIterator (все еще итератор!)
и за счет кучи левого кода на X++.

Но с одной стороны, рекурсивный спуск по AOT вряд ли будет иметь большую глубину (разве что в дизайнах форм/отчетов), поэтому вряд ли стоит бояться переполнения при обходе AOT. поэтому скорее всего своя рекурсивная функия как здесь вывод дерева из АОТа будет пооптимальнее
А с другой стороны, есть просто псевдотаблица UtelElements, обход которой дает обычный одноуровневый цикл.

Отсюда собственно и вопрос на обсуждение и для потрындеть:
Цитата:
Сообщение от mazzy Посмотреть сообщение
Как лучше сделать обход дерева AOT?
Рекурсивный TreeNode?
Цикл по UtilElement?
Еще как-то?
За перпендикулярный взгляд "работать с XML" отдельное спасибо.

Последний раз редактировалось mazzy; 05.12.2016 в 13:08.