AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.02.2019, 11:01   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от dech Посмотреть сообщение
Любая коллекция упрощает понимание кода. Коллекции позволяют работать на более высоком уровне абстракций.
Вопрос спорный и не однозначный. Зависит от конкретной задачи и личных предпочтений разработчика В данной задаче - все наоборот.

Цитата:
Сообщение от dech Посмотреть сообщение
Может и утяжеляет в плане производительности, но насколько? Что нам стоит выделить память под несколько объектов? Не встанет же аксапта колом?
Если вопрос "вообще", то вполне может! Объекты map (имею в виду коллекции) требуют большое количество оперативной памяти. При небольшом количестве элементов (как в данной задаче) - это не критично. Но если речь идет хотя бы о нескольких сотнях элементов, то это чудовищные потери производительности и просто гигантские затраты оперативной памяти.

Показательный пример - это классы работы с оборотно-сальдовыми ведомостями в Dax2009. Чудовищные тормоза и простая замена map на временные таблицы дает резкий скачок производительности даже без оптимизации остального кода.

В данной-то задаче это не критично, но, повторюсь, пихать мапы везде, потому что это "упрощает понимание кода" и "более высокий уровень абстракции" - не стоит. Надо понимать, что придется "принести в жертву" производительность.

Цитата:
Сообщение от dech Посмотреть сообщение
Предлагаю пересмотреть ваше отношение к коллекциям.
Так я не против. Просто нельзя бездумно лепить их везде, где это теоретически возможно.

Цитата:
Сообщение от dech Посмотреть сообщение
Можно и так, с появлением TFS комментарии теперь особо и не нужны. Пишу по регламенту разработки.
Я к тому, что замена на map, по сути, означает полное переписывание кода. Не исправление замеченных ошибок и недоработок, а именно полная замена. И отдельные вкрапления старого кода Это в принципе другая идеология написания кода.


В принципе, тут вообще не нужны ни контейнеры, ни map. Я не понимаю, почему не сконструировали команду Select-SQL за один проход по списку полей индекса. Ну, что-то вроде такого

X++:
strSelectList += ' count(*)';
fleldNum = 1;

    if (dataPrCompany)
    {
        fleldNum++;
        strSelectList += ', dataAreaId';
        strGroupList += ', dataAreaId';
        strOrderList += ', ' + int2str(fieldnum);
    }

    for (i = 1; i <= numberOfFields; i++)
    {
        if (...)
        {
            fleldNum++;
            strSelectList += ', ' + fieldname;
            strGroupList += ', ' + fieldname;
            strOrderList += ', ' + int2str(fieldnum);
        }
    }


    stmtStr = 'select ' + strSelectList + 
                   'from ... group by ' + strGroupList + 
                   ' order by ' + strOrderList;

(...)
Это не полноценный код, разумеется. Просто, чтобы показать идею. Здесь контейнер или коллекция нужны разве что для вменяемого сообщения в случае наличия дублей. Да и наполнение этого контейнера/мапа делается там же, в основном (и единственном!) цикле

Здесь разработчик явно действовал "по шаблону". Причем взятому откуда-то из другого класса. Вот и получил то, что получил. Тоже, вероятно, думал об "абстракциях"

Но! Повторюсь, это будет уже не исправление существующего кода, а написание нового. В духе личных предпочтений
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Daiver (1).
Теги
duplicates, index, sysdictindex, баг, индекс, ошибка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Баг или фича - неожиданное поведение метода xRecord.data() Pandasama DAX: Программирование 3 21.03.2016 13:01
AX 2012 Пересчет единиц измерения - баг или фича? Kabardian DAX: Функционал 3 25.02.2014 11:00
Баг или не баг? Murlin DAX: Программирование 53 14.09.2013 18:52
Баг при печати налогового кода petr DAX: Программирование 0 25.03.2009 16:33
баг в 2.5. Будьте осторожнее с символом "_" подчеркивание levsha DAX: Программирование 5 07.12.2004 12:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:21.