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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.08.2020, 17:55   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от belugin Посмотреть сообщение
Parm-методы это аналоги свойств в дотнете - они отличаются не только модификаторами доступа, но и тем, что внутрь можно запихнуть любую реализацию (сегодня он присваивает какое-то поле, завтра - конвертит и присваивает в другое)

Комитетов хороши тем, что без них не создашь объект. Поэтому в него хорошо передать обязательные параметры создания.

Конструкторы плохи тем что: в отличие от C# нет оверлоадов - то есть несколько конструкторов с разными наборами параметров не создашь;

Он не может вернуть инстанс другого класса. Оба недостатка можно обойти созданием приватного или протектед конструктора и набора фабричных методов под разные случаи. Набор может состоять из одного метода конструкт, например.
Очень жаль, что нет свойств и перегрузки методов, этого прям реально не хватает. Хорошо бы некоторые поля класса делать приватными, а не защищенными. Парм-методы - это реальное извращение, пытающееся заменить свойства.

Не соглашусь здесь: То, что конструктор не может вернуть инстанс другого класса, это не есть недостаток. Это единственно правильное поведение, не позволяющее выходить за рамки дозволенного, как во всех нормальных языках со строгой типизацией. Как и везде, именно для возврата нужного инстанса из семейства подклассов служат фабричные методы. И это не недостаток, и даже не воркэраунд.

В Java, кстати, считается, что если количество параметров в конструкторе больше трех, значит стоит завести класс, объединяющий некоторые поля по смыслу. Таким образом можно даже нормализовать таблицы, а также выделить в классе набор полей в единую сущность.
__________________
// no comments
Старый 27.08.2020, 18:15   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от dech Посмотреть сообщение
Очень жаль, что нет свойств и перегрузки методов, этого прям реально не хватает. Хорошо бы некоторые поля класса делать приватными, а не защищенными.
Все это давно уже есть и активно используется. Вот мой недавний код:
X++:
class ProdTableReservIndicatorEvaluator
{
    public ProdId                       prodId;
    public WHSReleaseStatus  releaseStatus, oldReleaseStatus;
    private boolean                    inactivated;
    ProdBOMReservIndicatorTolerance indicatorTolerance;

    public static ProdTableReservIndicatorEvaluator constuctFromProdTable(ProdTable _prodTable)
    {
        ProdTableReservIndicatorEvaluator indicatorCalc;

        indicatorCalc = new ProdTableReservIndicatorEvaluator();
        indicatorCalc.oldReleaseStatus = _prodTable.WHSReleaseStatus;
        indicatorCalc.prodId = _prodTable.ProdId;
        indicatorCalc.init();

        return indicatorCalc;
    }
}
Старый 27.08.2020, 18:40   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от EVGL Посмотреть сообщение
Все это давно уже есть и активно используется.
Прошу прощения, еще не имел возможности работать в D365.
__________________
// no comments
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX2009 почему setprefix не работает в циклах oleggy DAX: Программирование 1 03.05.2020 19:37
Печать "Без НДС" в накладной на продажу mnt_dx DAX: Функционал 4 23.01.2017 12:46
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter) gl00mie DAX: Программирование 15 30.03.2007 18:37
Экспорт в эксель через XML, еще один вариант AlexeyS DAX: Программирование 6 20.09.2006 13:00
почему с pause работает, а без нее не хочет? big_bugzy DAX: Программирование 8 29.08.2006 10:59
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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