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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.05.2018, 15:10   #1  
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   #2  
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   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от belugin Посмотреть сообщение
Это-то ладно, а вот callInventTrans(custTrans) считает что надо скастить касттранс к инвенттранс, а не ругнуться + нету каста на лету:

((CustTrans)common).accountNum
Мне, пожалуй что, нехватает запрета на неявное преобразование EDT. Просто я видел ситуации когда кто-то нечаянно код клиента в код поставщика присваивал или количество в стоимость. Единственное - вероятно надо было бы сохранить неявное преобразование результатов вычисления выражения.
Там, кстати, в D365 не сделали какую-то проверку Best practices на эту тему ?
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 15.05.2018, 16:39   #4  
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   #5  
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   #6  
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   #7  
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; // обязана ругаться
}
Старый 16.05.2018, 14:00   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
InventTrans inventTrans = (СustTrans)common; // должна быть ошибка компиляции
Это она в аксапте есть, но нет способа строго привести к другому типу не объявляя дополнительных переменных.

Цитата:
Как понимаю вопрос в таком downcast
void foo(Common _commonCustTrans)
Я имел ввиду это:
X++:
void foo(CustTrans _custTrans)
{
}

Common x;
foo(x);
Старый 16.05.2018, 14:12   #9  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
Это она в аксапте есть, но нет способа строго привести к другому типу не объявляя дополнительных переменных.



Я имел ввиду это:
X++:
void foo(CustTrans _custTrans)
{
}

Common x;
foo(x);
Ага. А должен быть warning в VS ?
Manager extends Person;
Worker extends Person;

void callWorker(Worker _worker){};

Person person;
callWorker(person);
Теги
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, время: 02:48.