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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.09.2010, 15:32   #1  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от db Посмотреть сообщение
...
Енумы можно определять как пустые (если соответствующего значения нет) по цифре 255. Завести где нито макрос/метод класса/глобальную функцию которая это будет возвращать и в нужных местах инициализировать/сравнивать. 255 не может быть у енума ни в каком случае (если не ошибаюсь, то последнее допустимое 250). ...
эээ, а если в какой нибудь из следующих версий вдруг решат увеличить максимальное число элементов в enum-е и сделают например 300? тогда такая доработка сразу внесет много лишней работы при переходе на новую версию.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 13.09.2010, 15:36   #2  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
эээ, а если в какой нибудь из следующих версий вдруг решат увеличить максимальное число элементов в enum-е и сделают например 300? тогда такая доработка сразу внесет много лишней работы при переходе на новую версию.
в замену одного числа в макросе/методе который это 255 определяет. Да и вероятность расширения енумов мала микроскопически

Дополнение. Имелся ввиду не макрос метод в каждом обработчике, а нечто одно на всю аксапту. Макрос который живет в AOT, статический метод, ф-ия в Global

Последний раз редактировалось db; 13.09.2010 в 15:40.
Старый 13.09.2010, 15:51   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от db Посмотреть сообщение
в замену одного числа в макросе/методе который это 255 определяет. Да и вероятность расширения енумов мала микроскопически

Дополнение. Имелся ввиду не макрос метод в каждом обработчике, а нечто одно на всю аксапту. Макрос который живет в AOT, статический метод, ф-ия в Global
Все равно мне кажется сомнительное решение. Использование констант в X++ не приветствуется.
На мой взгляд лучше подумать при создании enuma как он будет использоваться, в каких случаях по нему будут выполняться сравнительные действия, и уже продумать использовать в нем нулевой элемент, или нет.

Итого: на мой взгляд в Enum-параметрах лучше не использовать нулевой элемент.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: MikeR (4).
Старый 13.09.2010, 16:04   #4  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
Использование констант в X++ не приветствуется.
Именно поэтому их и заворачивают в макросы/стат методы

Для тех кому 255 неприемлемо по религиозным соображениям - кошерная эмуляция NULL с помощью двух parm- методов

MySuperEnum parmMySuperEnum()
boolean parmUseMySuperEnum()
Старый 13.09.2010, 16:10   #5  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от db Посмотреть сообщение
Именно поэтому их и заворачивают в макросы/стат методы

Для тех кому 255 неприемлемо по религиозным соображениям - кошерная эмуляция NULL с помощью двух parm- методов

MySuperEnum parmMySuperEnum()
boolean parmUseMySuperEnum()
Все проще Используйте везде в своем коде элемент None (0) как пустой, и тогда не придется писать глобальные методы с цифирками, или эмуляторы NULL

P.S. наше обсуждение ушло немного в сторону от исходной темы, приношу свои извинения топикстартеру
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 13.09.2010, 16:12   #6  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
Все проще Используйте везде в своем коде элемент None (0) как пустой, и тогда не придется писать глобальные методы с цифирками, или эмуляторы NULL

P.S. наше обсуждение ушло немного в сторону от исходной темы, приношу свои извинения топикстартеру
Да я бы рад, только что делать с каким нибудь, например, SalesType?
Старый 13.09.2010, 16:24   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от db Посмотреть сообщение
Да я бы рад, только что делать с каким нибудь, например, SalesType?
ждал этого вопроса
если вам нужно выполнить обработку по заказам, и эта обработка должна быть параметризирована, то я бы для обработки создал свой Enum, с помощью которого бы определялось, выполнять обработку по заказам с SalesType = Journal или Sales.
Конечно это более трудозатратно чем просто передать в параметре SalesType, но в случае с уже существующими (системными) enum-ами, где нулевой элемент несет смысловую нагрузку, это гарантирует что все проверки по параметру отработаю корректно, и все необходимые заказы будут обработаны. Вот как то так
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 13.09.2010, 15:49   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от db Посмотреть сообщение
зачем все эти извращения если можно просто предусмотреть нормальную работу класса с пустым параметром. Которая к тому же не накладывает никаких доп ограничений на вызовы/пакетную обработку и т.д.
Забил ногами Даже возражать не собираюсь. Сдаюсь
__________________
Возможно сделать все. Вопрос времени
Старый 13.09.2010, 15:58   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
эээ, а если в какой нибудь из следующих версий вдруг решат увеличить максимальное число элементов в enum-е и сделают например 300? тогда такая доработка сразу внесет много лишней работы при переходе на новую версию.
Учитывая как сильно последнее время отличаются между собой версии - эта "мелочь" потонет при апгрейде. Да и пригодится-то она только в своих модификациях только, которых не должно быть много .
По поводу констант - от их использования никуда не убежишь. И их использование заменяется использованием макросов.
Если бы можно было бы от констант отказаться - то давно б отказались. Не приветствуется использование таких констант, которые не могут быть константами - ставка налога к примеру. А какие-то вещи - типа количество дней в году, или "волшебный номер" 255 - вполне может использоваться. Как раз-таки его и не потребовалось бы использовать - если бы все енумы начинались бы с нулевого ничего не значащего значения.
__________________
Возможно сделать все. Вопрос времени
Старый 13.09.2010, 16:05   #10  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Учитывая как сильно последнее время отличаются между собой версии - эта "мелочь" потонет при апгрейде. Да и пригодится-то она только в своих модификациях только, которых не должно быть много .
По поводу констант - от их использования никуда не убежишь. И их использование заменяется использованием макросов.
Если бы можно было бы от констант отказаться - то давно б отказались. Не приветствуется использование таких констант, которые не могут быть константами - ставка налога к примеру. А какие-то вещи - типа количество дней в году, или "волшебный номер" 255 - вполне может использоваться. Как раз-таки его и не потребовалось бы использовать - если бы все енумы начинались бы с нулевого ничего не значащего значения.
понятное дело что от констант не уйти на 100%, но по максимуму их можно сократить
под не использованием нулевого значения, я не имел ввиду создание элементов начиная с 1. Имелось в виду создания Первого элемента как None = 0, которое не имеет смысловой нагрузки, а используется как пустое значение.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 13.09.2010, 16:11   #11  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
понятное дело что от констант не уйти на 100%, но по максимуму их можно сократить
Есть вещи (типа кол-во значений в енуме) которые можно принять за "условно постоянные". Почему-то ни у кого не возникает идеи считать к примеру пути к узлам АОТа как не константу. Или коды типов узлов (TreeNodeSysNodeType).

Цитата:
Сообщение от lev Посмотреть сообщение
под не использованием нулевого значения, я не имел ввиду создание элементов начиная с 1. Имелось в виду создания Первого элемента как None = 0, которое не имеет смысловой нагрузки, а используется как пустое значение.
В такой постановке абсолютно согласен.
__________________
Возможно сделать все. Вопрос времени
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Глюк RunBase (AX40sp2) Alexx7 DAX: Программирование 7 22.01.2010 10:59
Inside Dynamics AX 4.0: RunBase Framework Extension Part IV Blog bot DAX Blogs 0 02.10.2007 04:49
Inside Dynamics AX 4.0: RunBase Framework Extension Part III Blog bot DAX Blogs 0 02.10.2007 04:49
Inside Dynamics AX 4.0: RunBase Framework Extension Part I Blog bot DAX Blogs 0 30.09.2007 09:20
Некоторые вопросы внедрения приложений. Часть 2 Михаил Ковалев DAX: Прочие вопросы 0 27.05.2002 10:43
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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