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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.07.2017, 13:35   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от ta_and Посмотреть сообщение
Приведите пример прикладного класса, которому не нужен ни один параметр?
Вспомогательные классы проверки условий и утверждений
Цитата:
Сообщение от ta_and Посмотреть сообщение
Некорректный пример.
Да нет, пример самый подходящий. Что я вижу, исходя из нашего разговора? С одной стороны вы хотите обязать new() принимать параметр и считаете это золотым стандартом (которого, кстати не придерживается M$). С другой стороны вы хотите сделать применение Args стандартом де-факто. Т.е. идеальный вариант для вас, это
X++:
void new(Args _args)
Это, конечно, хорошо в какой-то мере и даже где-то в стандарте мелькает, но опять же повторюсь:
Цитата:
Сообщение от dech Посмотреть сообщение
Аргс - не панацея. Если классу нужен SalesLines и только он, то зачем городить инициализацию через аргс?
К примеру, если вы используете класс Map, то не будете же вы аргс заполнять?

Да и что будет, если так делать, как вы хотите? Представляете сколько параметров передается из метода в метод повсюду? Если все это стандартизовать, то боюсь, что от огромного количества экземпляров данного класса AOS-ы начнут дико свапить на диск, а пользователи сожгут вас на костре.
__________________
// no comments
Старый 18.07.2017, 15:25   #2  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
О. Да. 0.1 процента всех классов.

Цитата:
Сообщение от dech Посмотреть сообщение
идеальный вариант, это
X++:
void new(Args _args)
Да. только с маленькой поправкой:
X++:
void new(Args _args = null)
Эта поправка успокоит мятущуюся душу насчет Мар и сервисных классов?

Цитата:
Сообщение от dech Посмотреть сообщение
Представляете сколько параметров передается из метода в метод повсюду?
При чем здесь передача параметров из метода в метод?
Конструктор вызывается один раз для создания экземпляра.
Полюбому в созданный экземпляр передаются входные параметры.
Сейчас как раз это делается с помощью куевой хучи неформализованных методов аля initFromArgs и тому подобной лабудени.
Я предлагаю всего лишь законодательно это закрепить.
Мои мечты все равно не сбудутся. У М$ всегда свои планы на вечер. Но помечтать то я могу?...

Цитата:
Сообщение от dech Посмотреть сообщение
то боюсь, что от огромного количества экземпляров данного класса AOS-ы начнут дико свапить
Огромного количества чего? Того, что уже есть в системе? Что уже и так генерится и существует для каждого интерфейсного элемента и может быть запросто передано в класс? Вы серьезно? Ничего, что все main вызываются с передачей параметра аргс? это Вас не смущает?
Старый 18.07.2017, 19:02   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Я давно понял вашу позицию, но вы упрямо продолжаете держаться за воздух.
Цитата:
Сообщение от ta_and Посмотреть сообщение
О. Да. 0.1 процента всех классов.
Наберите-ка лучше в поиске по содержимому классов такую ключевую фразу:
X++:
void new()
Цитата:
Сообщение от ta_and Посмотреть сообщение
X++:
void new(Args _args = null)
Эта поправка успокоит мятущуюся душу насчет Мар и сервисных классов?
Вот тут я не понял, Вы что, реально и в сервисные классы хотите залезть? Работать с коллекциями через Args? Или как вообще?
Цитата:
Сообщение от ta_and Посмотреть сообщение
При чем здесь передача параметров из метода в метод?
Конструктор вызывается один раз для создания экземпляра.
Полюбому в созданный экземпляр передаются входные параметры.
Сейчас как раз это делается с помощью куевой хучи неформализованных методов аля initFromArgs и тому подобной лабудени.
Т.е. вы видите только те аргсы которые из менюайтемов вылупляются. На основе своих предположений о вашем "правильном" положении вещей в аксапте, я догадываюсь, что в недалеком будущем у вас абсолютно все классы инициализируются через аргс. И каждый, я повторюсь, каждый класс принимает нет тот же самый аргс, который был изначально. Каждому классу нужен будет отдельно созданный инстанс Аргс со своими параметрами.
Цитата:
Сообщение от ta_and Посмотреть сообщение
Огромного количества чего? Того, что уже есть в системе? Что уже и так генерится и существует для каждого интерфейсного элемента и может быть запросто передано в класс? Вы серьезно? Ничего, что все main вызываются с передачей параметра аргс? это Вас не смущает?
Как бы вам объяснить доходчиво... Давайте построим QueryRun таким макаром? Допустим, все работает через аргсы... Что ж, давайте сделаем 3 QueryBuildDataSource, на каждый навешаем по 5 QueryBuildRange... Результат надо передать в Query, а потом уже его получит QueryRun. Т.е. чтобы построить обычный динамический запрос, вы получите 17 разных инстансов Аргс! А если вы инвойс разнести хотите, там в SalesFormLetter не хило так можно развернуться, а? Посчитайте, сколько там в classDeclaration классов, передайте-ка каждому по своему экземпляру Аргс. А потом по цепочке из класса в класс. Они ведь тоже используют какие-то свои классы? Вы хоть раз замеряли производительность, объем используемой памяти? А Если каждый аргс будет держать в себе курсор не с одной записью?

Короче, ваша идея с аргс - чисто солдафонская привычка: грубо, топорно, но зато понятно и надёжно. А какова цена - да не важно совсем, главное работает и всем понятно))).
Всё, я с вами больше не спорю. Нет никакого смысла.
__________________
// no comments
За это сообщение автора поблагодарили: skuull (4).
Старый 19.07.2017, 03:37   #4  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от dech Посмотреть сообщение
Короче, ваша идея с аргс - чисто солдафонская привычка: грубо, топорно, но зато понятно и надёжно. А какова цена - да не важно совсем, главное работает и всем понятно))).
Дело не в передаче именно аргс, а в понятном и надежном подходе.
Это может быть и имя, и аргс, и массив параметров.

В стыдном PHP например это делается так
PHP код:
public object ReflectionClass::newInstanceArgs ([ array $args ] ) 
http://php.net/manual/en/reflectionc...stanceargs.php

PHP код:
public object ReflectionClass::newInstance mixed $args [, mixed $... ] ) 
http://php.net/manual/en/reflectionc...ewinstance.php

А есть и такая фишка
ReflectionClass::newInstanceWithoutConstructor — Creates a new class instance without invoking the constructor.
http://php.net/manual/en/reflectionc...onstructor.php

От передачи ссылки или null - системе не поплохеет.

Использование метаданных в случае данной темы - это само по себе не глупо.
Автор темы просто устал от того бардака который привнесли в неплохую и законченную систему.
Солдафонство в том смысле что должен быть единый и единственный фрэймворк в конкретном продукте/платформе, единообразие и следование уставу - это то что доктор студентам прописал
Старый 19.07.2017, 07:08   #5  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Дело не в передаче именно аргс, а в понятном и надежном подходе.
Что хорошего в передаче Args, если это не вызов через menuItem? Куча бессмысленных параметров, из которых будет лишь один будет иметь смысл, да и тот предельно обобщенный Object. Т.е. вся надежность в том, что надежно удается обмануть компилятор и словить ошибку в runtime.
Цитата:
Сообщение от ax_mct Посмотреть сообщение
В стыдном PHP например это делается так
Здесь соглашусь. Такого многие стыдятся. Но из уважения к твоим религиозным убеждениям про "граальность" некторых языков, тему развивать не вижу смысла.
__________________
Isn't it nice when things just work?
Старый 19.07.2017, 19:09   #6  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от macklakov Посмотреть сообщение
Что хорошего в передаче Args, если это не вызов через menuItem? Куча бессмысленных параметров, из которых будет лишь один будет иметь смысл, да и тот предельно обобщенный Object. Т.е. вся надежность в том, что надежно удается обмануть компилятор и словить ошибку в runtime.

Здесь соглашусь. Такого многие стыдятся. Но из уважения к твоим религиозным убеждениям про "граальность" некторых языков, тему развивать не вижу смысла.
Согласен что Args с тремя лицами (record, enum, object) не шибко прямой и понятный вариант. Но я не сколько об Args как о конкретном варианте, а о тупом солдафонстве которого так не хватает в AX. Чтобы просто и тупо как топор. Тут не так важно что именно, главное что единообразно по всей системе. Множественность фрэймворков под реальные и нереальные проблемы - это бардак там где должна быть казарма.
Собственно старые солдаты и тоскуют о порядке. Которого не стало.

Компилятор как защита от дурака - от дураков не помогает, но помогает делать дураков.
Теги
sysextension framework, sysoperation framework, как правильно, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stephenmann: Technical History of Dynamics AX - From Axapta 3.0 to AX2012 Blog bot DAX Blogs 5 03.03.2017 10:22
dynamicsax-fico: Invoice search AX2012 vs. AX7 (Part 2) Blog bot DAX Blogs 0 01.04.2016 10:11
DAX2009 аналог friend классов. Как сделать? Raven Melancholic DAX: Программирование 9 07.11.2015 23:50
emeadaxsupport: Inventory closing differences between AX4.0 and AX2012 using weighted average costing method Blog bot DAX Blogs 0 27.12.2012 19:11
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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