| Результаты опроса: Как лучше оформлять несколько условий в select where? | |||
| Я предпочитаю указывать операторы после условных выражений (Вариант 1) |      | 13 | 25.49% | 
| Я предпочитаю указывать операторы до условных выражений (Вариант 2) |      | 35 | 68.63% | 
| Использую комбинированный способ (написал в теме) |      | 3 | 5.88% | 
| Нет предпочтений: иногда делаю так, иногда иначе |      | 0 | 0% | 
| Не знаю/Мне все равно |      | 0 | 0% | 
| Голосовавшие: 51. Вы ещё не голосовали в этом опросе | |||
|  | Опции темы | 
|  24.06.2011, 20:43 | #1 | 
| Участник | Как лучше оформлять несколько условий в select where? Повторная попытка 
			
			Начало здесь Как лучше оформлять несколько условий в select where? Прошу переголосовать с измененными формулировками. В коде часто встречаются select c несколькими условиями (условными выражениями). Как лучше оформлять несколько условий в select where? Вариант 1. (операторы после условия) X++: select firstonly paymentTrans where paymentTrans.AccountNum == factureJour.CustVendInvoiceAccount && paymentTrans.Voucher == factureJour.Voucher && paymentTrans.CurrencyCode == factureJour.CurrencyCode && paymentTrans.PrepaymentFactureId_W == factureJour.FactureId && paymentTrans.Prepayment == NoYes::Yes; X++: select firstonly paymentTrans where paymentTrans.AccountNum == factureJour.CustVendInvoiceAccount && paymentTrans.Voucher == factureJour.Voucher && paymentTrans.CurrencyCode == factureJour.CurrencyCode && paymentTrans.PrepaymentFactureId_W == factureJour.FactureId && paymentTrans.Prepayment == NoYes::Yes; Перед условием или после условия? Почему? А в более сложны случаях? Например, X++: while select 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 | 
|  | 
|  24.06.2011, 20:50 | #2 | 
| Участник | 
			
			предыдущее достаточно интересное обсуждение здесь Как лучше оформлять несколько условий в select where? по наводке vanokh процитирую Best Practice ax3.0 ax2009 | 
|  | 
|  24.06.2011, 22:27 | #3 | 
| Участник | Цитата: Цитата: 
		
			- Вы хотите курить, как я вижу? - неожиданно обратился к Бездомному неизвестный, - вы какие предпочитаете?  - А у вас разные, что ли, есть? - мрачно спросил поэт, у которого папиросы кончились. - Какие предпочитаете? - повторил неизвестный. - Ну, "Нашу марку", - злобно ответил Бездомный. Незнакомец немедленно вытащил из кармана портсигар и предложил его Бездомному: - "Наша марка".   | 
|  | 
|  24.06.2011, 22:49 | #4 | 
| Участник | Цитата:   | 
|  | 
|  25.06.2011, 11:18 | #5 | 
| Участник | 
			
			Операторы до условия. В самом начале знакомства с аксаптой увидел такую запись. Мне показалась более наглядной. Теперь уже привык и не задумываюсь. Со сложными условиями примерно так. X++: while select bankClientPayment_RU where bankClientPayment_RU.RContractAccount notexists join RContractTable where ( ( RConractTable.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   
				__________________ If it ain't broke, take it apart and find out why (с) | 
|  | 
|  25.06.2011, 12:05 | #6 | 
| Moderator | 
			
			Предпочитаю операторы до условия, в случае сложных условий, внутри этих условий переношу логические операторы после условий, если уж совсем сложные условия то еще и скобки стараюсь разносить. X++: select firstonly paymentTrans where paymentTrans.AccountNum == factureJour.CustVendInvoiceAccount && paymentTrans.Voucher == factureJour.Voucher && paymentTrans.Prepayment == NoYes::Yes && (paymentTrans.CurrencyCode == "UAH" || paymentTrans.CurrencyCode == "USD"); 
				__________________ С уважением, kvan. Последний раз редактировалось kvan; 25.06.2011 в 12:09. | 
|  | 
|  25.06.2011, 23:47 | #7 | 
| Участник | 
			
			Ставлю "До",  тк если нужно строку потом закомментировать, то проще и аккуратней поставить "//" в начале строки, чем комметировать оператор строкой выше, а потом комментировать строку условия
		 | 
|  | 
|  26.06.2011, 18:36 | #8 | 
| Участник | 
			
			Тоже пишу до условных выражений. Причина та же, что и у других - легкость добавления и комментирования. Кроме того, люблю выравнивать части кода, а если делать операторы в конце строки, то выравнивание не такое красивое, особенно, если строка длинная - бывает, что на небольшом мониторе просто не видно как связаны условия - операторы выходят слишком далеко вправо. Если же они слева, то сразу видно как связаны строки оператора друг с другом.
		 | 
|  | 
|  26.06.2011, 19:10 | #9 | 
| Участник | 
			
			Указываю всегда после. Оно может не очень удобно, но БестПрактикс. Если каждый будет лепить в коде так как ему удобно, то сопровождать такой код будет совсем не весело. Кстати, можно устроить еще один опрос, В какой степени программеры Акс следуют рекомендациям БестПрактикс? | 
|  | 
|  26.06.2011, 22:58 | #10 | 
| Участник | 
			
			ага, только устаревший годков эдак на несколько... Цитата: Цитата: | 
|  | 
|  27.06.2011, 13:54 | #11 | 
| Участник | 
			
			соотношение не слишком изменилось
		 | 
|  |