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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.06.2008, 07:25   #1  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от macklakov Посмотреть сообщение
... лучше захардкодить все реально существующие варианты, чем ваять очередное "универсальное решение" на все случаи жизни...
N-угольные колеса вместо круглых ?
А потом при появлении нового варианта перетачивать на (N+1)-угольное, то бишь допрограммируя ?

Цитата:
Сообщение от macklakov Посмотреть сообщение
Мне недавно пришлось столкнуться с настройкой, в которой нужно выбрать класс, который будет производить рассчет. Ни консультанту ни программисту от таких решений не легче.
Простите, а чем это отличается функционально от выбора в какой-либо настройке некоего значения Enum'а, по которому в дальнейшем некий суперкласс породит своего потомка с отличным от других функционалом расчета? Программисту - труднее(отсутствует в момент написания проверка на типы и количество аргументов и нет подсветки синтаксиса), консультанту же должно быть по барабану.

Цитата:
Сообщение от macklakov Посмотреть сообщение
Консультант все равно до конца не понимает, чем один класс от другого отличается. А разработчику совсем беда, дебажить рассчет, который эти классы использует, практически не реально.
Проблемы консультанта, притом большие, если Enum в настройке он понимает, а класс - нет. Консультант без некоей доли общего программерского багажа по своей предметной части гораздо менее ценен, чем имеющий такой багаж.
Дебажить беда ? Дебажится аки "отче наш", единственная проблема навскидку видится в невозможности увидеть внутреннюю структуру объекта нашего класса, создаваемого через абстрактный объект, в области его жизни, однако при вызове любых методов оного - все как на ладони внутри этих методов. Ежели есть еще какие подводные камни - поведайте, буду весьма благодарен, особенно если на проекте в аттачменте приведете примеры таких проблем.

Цитата:
Сообщение от macklakov Посмотреть сообщение
И даже писатель стоящих скилзов не получил. Писать такие модификации не сложно, гордиться здесь нечем
Это, скорее всего, ему решать - поимел он полезный опыт или нет, гордиться ему или стыдиться. Скорее всего поимел, ибо как правило, мысль о подобных "универсализмах" приходит после того как вдоволь "наелся" рутинным допрограммированием и просыпается разумная лень оптимизаторская, что не есть плохо, но вот хорошо ли это - зависит от реализации задуманного.

Спорить можно долго, но давайте озадачимся вопросом - зачем они вообще были сделаны в системе, эти возможность и доступность вызова метода класса по имени для разработчика ? Атавизм это или возможность расширения ?
Вложения
Тип файла: xpo TestDictClass.xpo (2.4 Кб, 473 просмотров)
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 04.06.2008 в 07:33. Причина: XPO-шку забыл вклеить
Старый 04.06.2008, 09:34   #2  
Yprit is offline
Yprit
Злыдни
Аватар для Yprit
Злыдни
 
419 / 93 (4) ++++
Регистрация: 22.02.2004
Адрес: СПб
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Простите, а чем это отличается функционально от выбора в какой-либо настройке некоего значения Enum'а
1. Отсутствием контроля типов, правильности сигнатуры и т.п. в момент компиляции - все ошибки полезут в рантайме
2. Невозможностью использования перекрестных ссылок

В принципе, еще куча мелких проблем. Для знакомства со всеми ними достаточно плотно поработать с модулем "Расчеты с персоналом", функционалом счетчиков, например. Дебажить... Да, только и остается, что дебажить - втрое больше времени занимает, но ничего другого нам не оставили.
Старый 04.06.2008, 10:16   #3  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от Yprit Посмотреть сообщение
1. Отсутствием контроля типов, правильности сигнатуры и т.п. в момент компиляции - все ошибки полезут в рантайме
2. Невозможностью использования перекрестных ссылок
В вопросе ключевым словом было "функционально" и по сути своей больше к консультанту относилось. Именно функционально в плане работы логики - фактически ничем не отличается. Про программиста в принципе изначально ясно было.

Про перекрестные спасибо - совсем про них забыл что-то я.

В любом случае конечного вопроса не снимает - зачем сделана такая возможность ?
Я лично склоняюсь к варианту, что сие все-таки не атавизм, а при должном уровне исполнителей и контроля за ними - один из возможных путей построения всяких удобностей.
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 04.06.2008 в 10:28.
Старый 04.06.2008, 10:55   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
один из возможных путей построения всяких удобностей.
Удобностей для кого?
Можно привести примеры удобностей?
__________________
полезное на axForum, github, vk, coub.
Старый 25.11.2020, 06:52   #5  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Немного некропостинга ...
Цитата:
Сообщение от mazzy Посмотреть сообщение
Можно привести примеры удобностей?
Например, вот ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 04.06.2008, 10:54   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
N-угольные колеса вместо круглых ?
А потом при появлении нового варианта перетачивать на (N+1)-угольное, то бишь допрограммируя ?
Можно я повторюсь?
Цитата:
Сообщение от mazzy Посмотреть сообщение
Да, конечно, если программист захочет добавить функционал, то в первом случае он должен добавить всего лишь один метод, а во втором - расширить обертку. Но это только кажется. Поскольку в первом случае "настраивать" систему сможет только програмист. Поэтому в первом случае программист делает никому не нужную работу - вместо того, чтобы просто запрограммировать выбор в коде, он делает никому не нужный интерфейс, которым сможет воспользоваться только он сам (и то только в первое время - потом забудет как это работает и все равно полезет в код по новой).
__________________
полезное на axForum, github, vk, coub.
Старый 04.06.2008, 13:30   #7  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,129 / 917 (35) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Ежели есть еще какие подводные камни - поведайте, буду весьма благодарен, особенно если на проекте в аттачменте приведете примеры таких проблем.
1. Название вариантов enum-а несет в себе гораздо больше смысловой нагрузки, чем Id класса. В сложных расчетах этот параметр передается через 10-к методов, а иногда и контейнеров, в результате определить, что послужило причиной создания данного объекта и почему он являеся инстансом данного класса невозможно или очень сложно.
2. Т.к. перекрестные порушены, совсем не весело вносить существенные изменения в такой механизм. Т.к. механизм искуственно усложнен + не работают проверки сигнатур, любые изменения могут привести к неожиданным эффектам.
3. Если писатель допустил ошибку, найти ее и исправить крайне тяжело.
4. Рушится сама прадигма ООП. Такие конструкции даже на функциональное программирование не тянут, это больше похоже на использование GOTO.
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Программисту - труднее(отсутствует в момент написания проверка на типы и количество аргументов и нет подсветки синтаксиса), консультанту же должно быть по барабану.
О чем и речь. Консультанту и пользователю от этого пользы никакой, разве что подтормаживает немного сильнее. Зато разработчику масса проблем. Спрашивается, для чего создаются такие "универсальные решения"?
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
В любом случае конечного вопроса не снимает - зачем сделана такая возможность ?
Для создания инструментов разработчика. К примеру, если хочется модифицировать или создать свой механизм экспорта/импорта данных, без подобных механизмов было бы очень сложно.
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Скорее всего поимел, ибо как правило, мысль о подобных "универсализмах" приходит после того как вдоволь "наелся" рутинным допрограммированием и просыпается разумная лень оптимизаторская, что не есть плохо, но вот хорошо ли это - зависит от реализации задуманного.
Я не против обобщений и универсальности как таковых. Я против использования классов Dict... в бизнес-логике.
__________________
Isn't it nice when things just work?
За это сообщение автора поблагодарили: Yprit (1), petr (1).
Старый 04.06.2008, 14:54   #8  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от macklakov Посмотреть сообщение
Я не против обобщений и универсальности как таковых. Я против использования классов Dict... в бизнес-логике.
Посидел, подумал, заодно по вопросам mazzy поприкидывал варианты серъезного прикладного применения - наверное все же приведенная цитата по идеологии ближе к истине. Удобности только для сервисных и девелоперских вещей получается.
В бизнес-логике, действительно, по-большому счету игра свеч вряд ли будет стоить при использовании Dict-семейства ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 04.06.2008 в 14:56.
За это сообщение автора поблагодарили: macklakov (1).
Теги
display метод

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вызов display метода Ashir DAX: Программирование 4 08.12.2005 16:32
Не копирует из display-метода в буфер обмена akvi DAX: Программирование 6 08.12.2005 13:14
кэширование display метода macklakov DAX: Программирование 6 03.12.2005 14:58
Можно ли задать Caption для display-метода? Andronov DAX: Программирование 6 29.05.2003 14:18
edit и display методы Maxim Gorbunov DAX: База знаний и проекты 4 15.01.2002 12:58

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:58.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.