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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2019, 11:58   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от dech Посмотреть сообщение
Да, согласен, надо контролировать, что уже есть в методе, чтобы не допустить ошибку Error::wrongUseOfFunction().
Поймать ошибку на уровне компиляции завсегда лучше чем в рантайм. Лично для меня это перекрывает все остальные удобства и недостатки.

Сама по себе логика методов initFrom* понятна. Например, в таблице A есть внешний ключ на таблицу B, и нам этого не достаточно а нужно ещё помимо ссылки сохранить (для истории/для производительности/для гибкости) текущие значения каких-то ещё полей из таблицы B. В таком случае реализуя на таблице A метод initFromB мы создаём некоторую абстракцию, мы позволяем таблице А самой решать какие поля забрать из таблицы B. Если в дальнейшем понадобится изменить состав таких полей, то это можно будет сделать не меняя внешний код.

Если у таблицы несколько внешних ключей, то получаем набор методов initFrom*. Но каждый из этих методов по логике должен вызываться строго в определённый момент, в момент инициализации соответствующего внешнего ключа. Мы же не рассматриваем ситуацию при которой на входе у нас кучка безликих курсоров, а на выходе мы должны получить целостную запись

Единственное теоретическое применение обобщённого метода InitFrom, которое приходит в голову - это выполнение каких-то одинаковых действий при инициализации разных полей. Но что это может быть?

Ваш паттерн явно и намеренно нарушает Принцип единственной ответственности (Single Responsibility Principle) - та самая S в известной аббревиатуре SOLID
За это сообщение автора поблагодарили: dech (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фильтрование записей при "переходе к основной таблице" demID DAX: Программирование 10 18.11.2015 12:52
Аккуратнее! ValidateDelete() на таблице не всегда спасет. Pustik DAX: Программирование 10 16.03.2012 22:40
Переименование полей в одной таблице на основе данных из другой niksen DAX: Программирование 1 14.09.2011 12:34
Переход на правильную запись при Переходе к основной таблице. Anais DAX: Программирование 11 29.06.2004 19:16
фильтр по связанной таблице mick_777 DAX: Программирование 13 21.08.2002 16:00

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

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

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