Показать сообщение отдельно
Старый 12.02.2010, 12:06   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1786 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от belugin Посмотреть сообщение
корреспондируются проводки с совпадающими арактеристиками, потом всё остальное
Судя по коду
X++:
if ((_equals ? bondTransObjectDebet.equals(bondTransObjectCredit) : true))
проводки с совпадающими арактеристиками, обрабатываются дважды.

В любом случае непонятно для чего нужно два прохода? Важна последовательность обработки? Сомнительно. И потом, даже если и важна, всё равно можно обойтись без дублирования проверки на equals.

И уж совершенно точно незачем делать проверку наличия bondTransObjectDebet.remainAmountMST() во вложенном цикле. Правильно будет так:
X++:
...
while (enumeratorDebet.moveNext())
        {
            bondTransObjectDebet = this.findBondTransObject(enumeratorDebet.currentValue());
            // -->>
            if (bondTransObjectDebet.remainAmountMST() == 0)
            {
                continue;
            }
            // <<--
            enumeratorCredit.reset();
            while (enumeratorCredit.moveNext())
            {
//                if (bondTransObjectDebet.remainAmountMST() == 0)
//                {
//                    break;
//                }
                ...
Пусть не большая, но всё таки оптимизация