Показать сообщение отдельно
Старый 12.04.2011, 23:48   #44  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от CDR Посмотреть сообщение
X++:
void processDefaultData()
{
    ;
    processData(data1);
    processData(data2);
    processData(data3);
    processData(data4);
    ....
}
ИМХО, в подавляющем большинстве Аксаптовых случаев это наиболее простой, быстрый, наглядный, гибкий и т.д. способ обработки статичных начальных данных без всяких коллекций и хранилищ.
да, спасибо.
во-первых, я забыл записать этот способ. а он обсуждался.
это будет способ 5.

во-вторых,
чтобы так написать нужно чтобы processData был реентерабельным.
в принципе, не такое уж усложняющее требование. но все-таки.

в-третьих, я не зря упомянул в теме про классы.
при таком подходе, класс-потомок сможет только добавлять начальные данные, но не изменять начальные данные родителя.
X++:
class foo
{
    void processDefaultData()
    {
        ;
        processData(data1);
        processData(data2);
        processData(data3);
        processData(data4);
        ....
    }
....
}

class fooBar extends foo
{
    void processDefaultData()
    {
        ;  // как в этом методе изменить/убрать из списка data3?
        super();
        processData(data5);
        ....
    }
}
в-четвертых, инициализация динамического списка может потребоваться чтобы выполнить какую-нибудь пред-обработку. Так, например, LedgerVoucher суммирует движения по... Ой, я же не пишу про учет. Ок, например, Query не позволяет удалять Range. Поэтому, по-уму надо бы сначала провести оптимизацию range'й.

в общем, бывают случаи, когда совсем статический подход не работает.
но согласен - это очень хороший подход в большинстве случаев.
__________________
полезное на axForum, github, vk, coub.