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

Результаты опроса: Какой вариант вы бы предпочли? И почему?
validateAndWrite() + validateAndWriteNoThrow() 1 8.33%
validateAndWriteOrThrow() + validateAndWrite() 0 0%
validateAndWrite(boolean noThrow = false) 1 8.33%
validateAndWrite(boolean noThrow = true) 0 0%
validateAndWrite(boolean throwIfError = false) 0 0%
validateAndWrite(boolean throwIfError = true) 2 16.67%
я предложил свой вариант в этой ветке 2 16.67%
затрудняюсь ответить, просто хочу посмотреть результаты опроса 6 50.00%
Голосовавшие: 12. Вы ещё не голосовали в этом опросе

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.08.2021, 09:58   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Пример с validateWrite + Write явно надуманный.
Да ну?!
т.е. runbase с эго validate и run - "это другое"

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Поскольку в данной теме речь идет именно о создании методов, то и получим дублирование кода
ну... блин... тут явная проблема с логикой.
создание методов вовсе НЕ приводит к дублированию кода.


Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Это просто счастье, если параметр добавляют. Обычно именно тупо дубликат делают
это проблема конкретной команды и ее конкретного team-лидера.
это НЕ проблема самого CodeStyle.

Насчет параметра.
Правильно говоришь - скорее всего параметров будет много.
вызовов метода с параметрами будет много.
т.е. вот таких конструкций будет дофига:
X++:
myObj.myMethod(voucher, inventLocationId, true, inventColorId, false, params);
и как понять этот метод выкинет исключение или нет?
и как понять допустимо ли здесь игнрорировать результат?

поэтому код будет усеян уродливыми конструкциями вида
X++:
if( myObj.myMethod(voucher, inventLocationId, true, inventColorId, false, params) )
{
    throw Error::Error
}
а можно было бы одной строкой
X++:
myObj.myMethodOrThrow(voucher, inventLocationId, true, inventColorId, params);

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Сама постановка вопроса не корректная.
какая постановка?
этого вопроса "Какой вариант вы бы предпочли? И почему?"?
как может быть такая постановка некорректной?

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Как правило, подобные методы редко продумываются на этапе создания архитектуры проекта. Они возникают "естественным путем" по мере возникновения в них необходимости. Соответственно и варианты реализации также возникают "по месту". Вот что в данном случае покажется более уместным, то и делают
генезис понятен. согласен, что именно так и происходит.
но это не повод не задавать вопросы
и это не повод не выполнять рефакторинг.
не так ли?
__________________
полезное на axForum, github, vk, coub.
Старый 02.08.2021, 14:27   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,657 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Да ну?!
т.е. runbase с эго validate и run - "это другое"
Да. Логика другая. Это же не методы ValidateAndRun() и ValidateAndRunNoThrow(). В терминах исходного вопроса тут уместен был бы ValidateNoThrow()

Цитата:
Сообщение от mazzy Посмотреть сообщение
ну... блин... тут явная проблема с логикой.
создание методов вовсе НЕ приводит к дублированию кода.
Не приводит, если речь идет о рефакторинге или исходном проектировании архитектуры. При создании методов "естественным путем" - будут дубли

Цитата:
Сообщение от mazzy Посмотреть сообщение
это проблема конкретной команды и ее конкретного team-лидера.
это НЕ проблема самого CodeStyle.
Да. Но

1. Рассматриваемый здесь CodeStyle - не стандарт. Собственная разработка
2. При создании методов "естественным путем" требуется рефакторинг, который, в свою очередь, требует времени и сил. Вот сильно сомневаюсь, что с этим станут заморачиваться

Т.е. это все-таки проблемы той команды, которая этот самый CodeStyle будет поддерживать...

Цитата:
Сообщение от mazzy Посмотреть сообщение
Правильно говоришь - скорее всего параметров будет много.
(...)
и как понять этот метод выкинет исключение или нет?
и как понять допустимо ли здесь игнрорировать результат?
(...)
поэтому код будет усеян уродливыми конструкциями вида
(...)
а можно было бы одной строкой
Это рассуждения из цикла "сферического коня в вакууме". Реально-то все не так происходит. Как правило, задача разовая.

А вот если задача оказалась не разовая, а часто повторяется, вот в этом случае уже повод задуматься о рефакторинге и каком-то более удобном способе вызова

Цитата:
Сообщение от mazzy Посмотреть сообщение
какая постановка?
этого вопроса "Какой вариант вы бы предпочли? И почему?"?
как может быть такая постановка некорректной?
Когда фразу вырывают из контекста, то и получаем не корректную постановку. Я отвечал по контексту дискуссии. Если же вернуться к исходному вопросу, то

Цитата:
Сообщение от mazzy Посмотреть сообщение
пример в ax2009 - InventMovement::construct + InventMovement::constructNoThrow
пример в ax2012 - PcGlobalTableConstraintCellEditor::validateIntegerValue + PcGlobalTableConstraintCellEditor::validateIntegerValueNoThrow
Вот это удачный пример решения и именно на этом уровне я бы и остановился.

Т.е. в исходной постановке задачи в данном теме - это метод ValidateWrite() скопировать в метод ValidateWriteNoThrow(), а в самом ValidateWrite() вывести исключение, если проверка с ошибкой

Не надо "копать глубже" и делать ValidateAndWriteNoThrow() - это уже явно лишнее и избыточное решение

Цитата:
Сообщение от mazzy Посмотреть сообщение
генезис понятен. согласен, что именно так и происходит.
но это не повод не задавать вопросы
и это не повод не выполнять рефакторинг.
не так ли?
В теории. На практике возможны варианты. И вот не знаю, к счастью или к сожалению. Нет однозначного ответа
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
bojensen: Optional filter in SSRS | Musings by Generator Blog bot DAX Blogs 0 08.09.2014 11:11
emeadaxsupport: Manufacturing Execution in AX 2012: Issue with the "Lock employee"-parameter Blog bot DAX Blogs 0 19.09.2013 18:11
emeadaxsupport: "Parameter is missing a value" error running a customized report in Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 21.11.2012 00:12
mfp: Optional parameters in C# and X++ Blog bot DAX Blogs 0 30.01.2010 00:05
Developer notes: Null value for ADO command parameter Blog bot DAX Blogs 0 03.05.2008 08:16

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

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

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