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

Результаты опроса: Как лучше оформлять несколько условий в select where?
Я предпочитаю указывать операторы до условия 27 60.00%
Я предпочитаю указывать операторы после условия 15 33.33%
Нет предпочтений: иногда делаю так, иногда иначе 3 6.67%
Не знаю/Мне все равно 0 0%
Голосовавшие: 45. Вы ещё не голосовали в этом опросе

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.06.2011, 23:06   #21  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Уже столько всего сказано... я предпочитаю форматировать запросы так:
X++:
while select createdbBy, createdDateTime, RecId
    from    bankClientPayment_RU
    where   bankClientPayment_RU.RContractAccount
    notexists join RContractTable
    where       (   (   RContractTable.RContractPartnerType == RContractPartnerType::Cust
                    &&  BankClientPayment_RU.PartnerType    == ModuleCustVend::Cust 
                    )
                ||  (   RContractTable.RContractPartnerType == RContractPartnerType::Vend
                    &&  BankClientPayment_RU.PartnerType    == ModuleCustVend::Vend 
                    )
                )
            &&          RContractTable.RContractAccount     == bankClientPayment_RU.RContractAccount
            &&          RContractTable.RContractCode        == bankClientPayment_RU.RContractCode
С notexists join, конечно, засада - все отступы рушит, а так, если после where/join/from использовать табуляцию, получается все выровнено одинаково. А еще в сложных логических выражениях или в одиночных запросах select (если только они совсем уж не какие-нить тривиальные) предпочитаю точку с запятой ставить на новой строке - так, в случае чего, удобно новые условия добавлять.
Собственно, основной принцип, как уже отмечали тут, - это возможность править впоследствии код, затрагивая минимум исходных строк, в идеале - лишь добавляя новые строки, чтобы на сравнении они были бы четко отделены от исходного варианта кода. В этом отношении очень раздражает, что в стандартном функционале какой-нить вызов метода с тучей параметров бывает если и написан даже с каждым параметром на отдельной строке, то последний обязательно оказывается на одной строке с закрывающей скобкой. Ну <censored> просто, ни фига о других не думают...
Старый 24.06.2011, 04:17   #22  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
А в Best practice по Ax2009 хоть кто-нибудь заглядывал?
http://www.microsoft.com/download/en...ng=en&id=23084
рекомендуют исключительно в начале строки (до условия)...
За это сообщение автора поблагодарили: wolfstein (2).
Старый 24.06.2011, 07:39   #23  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от vanokh Посмотреть сообщение
А в Best practice по Ax2009 хоть кто-нибудь заглядывал?
1. спасибо
2. вопрос то был о предпочтениях.
3. многие еще на трешке, там это не регламентировалось, но сами разработчики часто писали операторы ПОСЛЕ условий.
__________________
полезное на axForum, github, vk, coub.
Старый 24.06.2011, 10:19   #24  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
Цитата:
Сообщение от mazzy Посмотреть сообщение
2. вопрос то был о предпочтениях.
я же не в ультимативной форме, просто показалось странным, что никто не упомянул...
Цитата:
Сообщение от mazzy Посмотреть сообщение
3. многие еще на трешке, там это не регламентировалось, но сами разработчики часто писали операторы ПОСЛЕ условий.
хм, и вот это странно - та chm'ка, которую я читал при обучении (Best Practice Handbook) и потом почти ни разу не открывал, говорит, что "the boolean operators (&&) are in the end of the line (and in columns)"

я это не к тому, чтобы кого-то поправить или указать - понятно, что предпочтения и рекомендации все это... а вот в одном коллективе лучше, чтоб стиль был один. сейчас вот учим нового сотрудника и код его меняется в зависимости от того, кто из программистов в данный момент ему наставничает...
За это сообщение автора поблагодарили: mazzy (2).
Старый 24.06.2011, 10:40   #25  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от vanokh Посмотреть сообщение
хм, и вот это странно - та chm'ка, которую я читал при обучении (Best Practice Handbook) и потом почти ни разу не открывал, говорит, что "the boolean operators (&&) are in the end of the line (and in columns)"
Спасибо.
По ключевым словам нашел и для истории оставлю

ax3.0
Нажмите на изображение для увеличения
Название: Dev_BPHB_chm.PNG
Просмотров: 428
Размер:	116.4 Кб
ID:	6951

ax2009
Нажмите на изображение для увеличения
Название: BestPractice2009.PNG
Просмотров: 372
Размер:	69.4 Кб
ID:	6952
__________________
полезное на axForum, github, vk, coub.
Старый 24.06.2011, 14:13   #26  
kaw is offline
kaw
Участник
 
122 / 35 (2) +++
Регистрация: 23.03.2004
Адрес: Новосибирск
Цитата:
Сообщение от Zabr Посмотреть сообщение
Wamr меня опередил. В точности так. С той поправкой, что "текущее ощущение прекрасного" как правило заставляет выровнять знаки равенства:
X++:
&& RContractTable.RContractAccount == bankClientPayment_RU.RContractAccount
&& RContractTable.RContractCode    == bankClientPayment_RU.RContractCode
Возможно, кому такое выравнивание кажется плохой привычкой.
А как "текущее ощущение прекрасного" сочетается со знаком "!" ?

X++:
&& ! RContractTable.RContractAccount
или

X++:
&&  RContractTable.RContractAccount == ''
Старый 24.06.2011, 16:45   #27  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
mazzy, а можно синхронизировать понятия "вариант 1" и "вариант 2" из стартового сообщения с понятиями "до условия" и "после условия" ? например, явно прописать "вар 1" и "вар 2" в пунктах голосования, а то сейчас мне кажется, что они перекрестились (наверное, торможу к вечеру и к концу недели).

Мой выбор будет:
where (...)
&& (...)
&& (...)
это значит в какой пункт надо ткнуть?

Спасибо.
Старый 24.06.2011, 16:52   #28  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
дописал.

Цитата:
Сообщение от Gustav Посмотреть сообщение
это значит в какой пункт надо ткнуть?
вариант 2.
__________________
полезное на axForum, github, vk, coub.
Старый 24.06.2011, 17:04   #29  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Gustav Посмотреть сообщение
Мой выбор будет:
where (...)
&& (...)
&& (...)
Одно время даже страдал таким выпендражем, как вставка в строку c where фиктивного условия типа where 1==1 или where true. В этом случае все реальные условия ниже единообразно начинались с && - было удобно комментировать условия в процессе отладки.
Старый 24.06.2011, 17:23   #30  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,666 / 1172 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Gustav Посмотреть сообщение
это значит в какой пункт надо ткнуть?
Вот и я тоже не понял, пока mazzy только что не разъяснил. Почему написано "после", когда оно "до"? Ну, в смысле, в одной строке "до". Хотя, если "после" - это после первого условия, то как тогда понимать "до"? Ведь до первого условия поставить ничего нельзя. Совсем запутался.

У меня почему-то сильное подозрение, что большинство проголосовало не так, как они работают на самом деле по причине непонятности текста пунктов голосования. Я проголосовал только что, после четкого разъяснения чему же соответствуют пункты.
Старый 24.06.2011, 19:57   #31  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 513 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Последние несколько лет пишу так, кажется более удобным для чтения.
Заметил, что некоторые участники форума придерживается такой же структуры.

X++:
        if (    (   prodLabelType   == KAB_ProdLabelType::FinalLabel
                ||  prodLabelType   == KAB_ProdLabelType::ControlledLabel)
            &&  confirmedQty    > 0)
        {
X++:
    while select salesTable
        index StatusCustAccIdx
        where salesTable.SalesStatus  == SalesStatus::Backorder
            join TableId from CustTable
                index AccountIdx
                where       CustTable.AccountNum    == salesTable.CustAccount
                        &&  CustTable.CustGroup     != 'KSS'
                join forupdate salesLine
                    index SalesLineIdx
                    where       salesLine.SalesId               == salesTable.SalesId
                            &&  salesLine.RemainSalesPhysical   > 0
Старый 24.06.2011, 20:26   #32  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,666 / 1172 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Просто ради проверки моего предположения. Все ли голосовавшие поняли, что пункты голосования означали следующее:

Я предпочитаю указывать операторы до условия

X++:
where (...) &&
          (...) &&
          (...)
Я предпочитаю указывать операторы после условия

X++:
where (...)
          && (...)
          && (...)
Старый 24.06.2011, 20:40   #33  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Просто ради проверки моего предположения. Все ли голосовавшие поняли, что пункты голосования означали следующее:

Я предпочитаю указывать операторы до условия

X++:
where (...) &&
          (...) &&
          (...)
Я предпочитаю указывать операторы после условия

X++:
where (...)
          && (...)
          && (...)
О_о!

понятно. закрываем тему, пересоздаем.
Как лучше оформлять несколько условий в select where? Повторная попытка

пожалуйста, проголосуйте заново.
__________________
полезное на axForum, github, vk, coub.
Теги
select, как правильно, оформление кода, условия

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
select в X++ и список значений в условии where Prophetic DAX: Программирование 20 17.08.2010 18:43
QueryBuildRange в select.. where propeller DAX: Программирование 11 30.09.2008 13:35
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
select * where ... Perc DAX: Программирование 10 06.07.2005 12:31

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

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

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