Показать сообщение отдельно
Старый 29.07.2014, 12:13   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
В чем смысл подобной конструкции?
Я щас глупость спрошу. Но весь мозг сломал в размышлениях "зачем?"

AX2012 R3.
Класс RetailCDXChannelSpecificData, метод trackChannelDBAssignment()

вот очищенный от лишнего код:
X++:
public void trackChannelDBAssignment()
{
    container channelDB;
    int i;
    RefRecId channelDBRecId;

    while select RefRecId
        from ref1
        where // условия
    {
        channelDB += ref1.RefRecID;
    }

    for (i = 1; i <= conLen(channelDB); ++i)
    {
        channelDBRecId = conPeek(channelDB, i);

        // некие действия
    }
}
ВОПРОС:
нафига разработчики Майкрософт сначала собирают контейнер, а затем делают цикл по контейнеру?

контейнер - внутренняя переменная, никуда не возвращается, никаких побочных эффектов он не дает. никаких действий со счетчиком не выполняется. счетчик не возвращается. break'ов из циклов тоже не бывает.

ЗАЧЕМ?
Почему не сразу один цикл?

X++:
public void trackChannelDBAssignment()
{
    RefRecId channelDBRecId;

    while select RefRecId
        from ref1
        where // условия
    {
        channelDBRecId = ref1.RefRecID;

        // некие действия
    }
}