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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.05.2018, 18:08   #1  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,486 / 408 (16) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Прям бейсик как он есть))))))
__________________
С уважением,
Вячеслав
Старый 15.05.2018, 09:25   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от pitersky Посмотреть сообщение
Прям бейсик как он есть))))))
В джаваскрипте много всяких несуразностей (в качестве примера можно зайти на сайт http://www.jsfuck.com/ который превращает строчку на js в строчку только из скобочек, которая, тем не менее делает то же самое).

НО X++ скорее наследует концепции из C#:
  • строгая статическая типизация
  • обязательное декларирование переменных
Более того, начиная с Ax2012 его сделали строже, в том, что касается наследования и привидений типов, в 7 он примерно на уровне C# (бесит, что есть неявное приведение типов при присваивании и передаче параметров и динамические вызовы, но это совместимость)
Старый 15.05.2018, 15:10   #3  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
В джаваскрипте много всяких несуразностей
...
в 7 он примерно на уровне C# (бесит, что есть неявное приведение типов
...
То есть к примеру приведение int к boolean, 0 к false?

Я могу простить все недостатки среде программирования и языку только за то что можно работать локально на макбуке 7-8 летней давности. C понтом, в старбаксе

Вот что лично меня бесит это все увеличивающееся количество требуемого железа для программирования. Есть чувство что это неестественно. Так не должно быть.
Цитата:
Убивает скорость набора кода (это притом, что работаю в метре от сервера с весьма внушительной производительностью; те рахитичные виртуальные машины, что коллеги из Хайдрабада используют, по ощущениям слабее), отладки, компиляции, сборки, а также параноидальные best practices. Да, build занимает около 12 секунд, но само web-приложение перезапускается вдвое дольше. Мука.
Старый 15.05.2018, 16:20   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
То есть к примеру приведение int к boolean, 0 к false
Это-то ладно, а вот callInventTrans(custTrans) считает что надо скастить касттранс к инвенттранс, а не ругнуться + нету каста на лету:

((CustTrans)common).accountNum
Старый 15.05.2018, 16:37   #5  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,895 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от belugin Посмотреть сообщение
Это-то ладно, а вот callInventTrans(custTrans) считает что надо скастить касттранс к инвенттранс, а не ругнуться + нету каста на лету:

((CustTrans)common).accountNum
Мне, пожалуй что, нехватает запрета на неявное преобразование EDT. Просто я видел ситуации когда кто-то нечаянно код клиента в код поставщика присваивал или количество в стоимость. Единственное - вероятно надо было бы сохранить неявное преобразование результатов вычисления выражения.
Там, кстати, в D365 не сделали какую-то проверку Best practices на эту тему ?
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 15.05.2018, 16:39   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от fed Посмотреть сообщение
Там, кстати, в D365 не сделали какую-то проверку Best practices на эту тему ?
Нет, такой проверки нет. Все примитивы вычисляются как базовые типы и так же сравниваются. Для Extensible Base Enums есть проверка на то, что они не превращаются в число и обратно.
Старый 16.05.2018, 02:29   #7  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
Это-то ладно, а вот callInventTrans(custTrans) считает что надо скастить касттранс к инвенттранс, а не ругнуться + нету каста на лету:

((CustTrans)common).accountNum
Сommon реализован как класс. Object ->xRecord->Common.

Соответственно и InventTrans и CustTrans это его дети. Все в соответствии с ООП, полиморфизм.
Забавно

Нечего common использовать тем кто ругается на var
Старый 16.05.2018, 09:19   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Сommon реализован как класс. Object ->xRecord->Common.

Соответственно и InventTrans и CustTrans это его дети. Все в соответствии с ООП, полиморфизм.
Я ругаюсь не на использование коммона, а на его тихий даункаст.

Попробуйте в C# написать

X++:
Object o;
List l;

o = l; // номально
l = (List)o; // номально
l = o as List; // нормально
l = o; // ошибка компиляции
Старый 16.05.2018, 13:54   #9  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Navision
Цитата:
Сообщение от belugin Посмотреть сообщение
Я ругаюсь не на использование коммона, а на его тихий даункаст.

Попробуйте в C# написать

X++:
Object o;
List l;

o = l; // номально
[B]l = (List)o; // номально[/B]
l = o as List; // нормально
[B]l = o; // ошибка компиляции[/B]
Вспоминая ошибки молодости 15 летней давности
InventTrans inventTrans = _custTrans; // должна быть ошибка компиляции
InventTrans inventTrans = (СustTrans)common; // должна быть ошибка компиляции

Как понимаю вопрос в таком downcast
void foo(Common _commonCustTrans)
{
InventTrans inventTrans = (InventTrans)_commonCustTrans;
}

Тут ничего не поделать, все законно. Имена переменных ничего не значат, а передается родитель.
void foo(Parent _childA)
{
ChildB childB = (ChildB)_childA;
}

А вот если передавать конкретный тип, а не common, то да можно жаловаться
void foo(ChildA_childA) // вместо common например CustTable _custTable
{
ChildB childB = (ChildB)_childA; // обязана ругаться
}
Теги
ax7, dynamics 365 for operations, x++

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
instructorbrandon: April 12th, One Hour D365UG Training Webinar on Undocumented Technique for Performance Tuning D365FO Blog bot DAX Blogs 0 11.04.2018 03:42
D365FO - Как выбрать группу ресурсов (Azure Resource Group) для одно-серверной облачной среды D365FO? MarinaAX DAX: Администрирование 1 14.02.2018 00:03
cleverax: D365FO: Using Bar codes, External codes and GTIN in Warehouse app to identify an item. Blog bot DAX Blogs 0 03.02.2018 21:13
cleverax: D365FO: Manual inbound load rating Blog bot DAX Blogs 0 03.02.2018 21:13
Первые впечатления от АКСАПТЫ Rafael DAX: Прочие вопросы 0 27.11.2001 21:24

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

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

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