| 
			
			 | 
		#21 | 
| 
			
			 Британский учённый 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я так пишу. Не вижу криминала. Считаю это более очевидным, сразу видно, что это булевая переменная. 
		
		
		
		
		
		
			X++:     boolean                         b;
    Str                             s;
    NoYesId                         n;
;
    if (    b == true
        &&  n == NoYes::Yes
        &&  s != '')
    {
    }
    
    if (    b
        &&  n
        &&  s)
    {
    
    }
				__________________ 
		
		
		
		
	Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: BOAL (2). | |
| 
			
			 | 
		#22 | 
| 
			
			 Британский учённый 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Владимир Максимов
			 
 
			Честно говоря, не вижу особых проблем. Ну, сравнивают с логической константой и что? Для меня, например, так нагляднее, чем использование восклицательного знака, да еще без пробела. Попробуй еще разгляди его! А так, никакой неоднозначности и не надо "с лупой" искать этот восклицательный знак. 
		
	
				__________________ 
		
		
		
		
	Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.  | 
| 
	
 | 
| 
			
			 | 
		#23 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А что здесь некрасивого? По сути, сравнение двух логических переменных - это XOR (исключающее "или").
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: macklakov (1). | |
| 
			
			 | 
		#24 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А в целом согласен с fed. Качество кода, производимого Майкрософт, стремительно падает от версии к версии. К сожалению. 
		
		
		
		
		
		
			* это исключительно моё личное мнение  
		
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#25 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Интересная дискуссия.  
		
		
		
		
		
		
			
		
		
		
		
	![]() Best practice такого конкретно нет, насколько мне известно, но этому и не препятствуют, так как, как уже многие написали, абсолютно легальная операция и многие предпочитают именно такой стиль написания. Личное мне это тоже всегда бросается в глаза, но чаще в других случаях, когда используются таблицы, и вместо if (inventTable) используется что-нить типа if (inventTable.ItemId != "") Но тому тоже есть теоретически верные аргументы, поэтому такие структуры я вижу в коде все чаще. По теме, в Inventory коде добавились еще конструкции вида if (0 != inventTable.RecId) или if (true == isProductMaster), когда константа идет первой в условии. Работал у нас парень один из Польши, который до этого писал много на С, и там это повсеместная практика, так как защищает от непроизвольных описок в таких логических условиях (уже забыл конкретные примеры, которые он приводил, когда я первый раз его об этом спросил) А про общее снижение кода... Да, я тоже считаю, что это так. Особенно учитывая сколько кода мы купили у партнеров.  | 
| 
	
 | 
| 
			
			 | 
		#26 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от kashperuk
			 
 
			По теме, в Inventory коде добавились еще конструкции вида if (0 != inventTable.RecId) или if (true == isProductMaster), когда константа идет первой в условии. Работал у нас парень один из Польши, который до этого писал много на С, и там это повсеместная практика, так как защищает от непроизвольных описок в таких логических условиях (уже забыл конкретные примеры, которые он приводил, когда я первый раз его об этом спросил) Но во первых даже в C есть более простое и изящное решение - просто включить варнинги компилятора. Все известные мне компиляторы C, (даже gcc по моему), могут выдавать варнинг при попытке использования оператора присвоения внутри if. Во вторых - а какое это вообще имеет отношение к Аксапте ? Уж там то нечаянно оператор присвоения в if() не засунешь...  | 
| 
	
 | 
| 
			
			 | 
		#27 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от fed
			 
 
			Ну я тоже когда-то много программировал на C. Там всегда есть опасность вместо if(var==1) написать if(var=1). Второй вариант конструкции вполне синтаксически легален, но вместо сравнения, присвоит значение в var, потом результат операции (1) закастует в логическое значение и потом выполнит оператор, поскольку в if() стоит истинное логическое условие. В такой ситуации можно писать условие в вывернутом формате типа if (1==var). Тут уж если нечаянно один знак равенства поставил - компилятор ошибку выдаст. 
		
	Но во первых даже в C есть более простое и изящное решение - просто включить варнинги компилятора. Все известные мне компиляторы C, (даже gcc по моему), могут выдавать варнинг при попытке использования оператора присвоения внутри if. Во вторых - а какое это вообще имеет отношение к Аксапте ? Уж там то нечаянно оператор присвоения в if() не засунешь... А отношение имеет прямое - просто показывает, что у нас нету жестких рекомендаций написания кода, поэтому все пишут "как хотят".  | 
| 
	
 | 
| 
			
			 | 
		#28 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А вот это напрасно - хотя бы из уважения к людям которым потом эти письма дяди Федора разбирать и фиксить стоило бы этим озаботиться
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	-ТСЯ или -ТЬСЯ ?  | 
| 
	
 | 
| 
			
			 | 
		#29 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Еще страшно злит, когда в selectах в явном виде указывают список полей. Причем я могу понять, когда это делают с учетом покрывающего индекса (например только recId извлекают). Но понять, почему те криворукие создания которые AIF разрабатывали, ухитрились напихать списки полей во все запросы - это выше моих возможностей...
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#30 | 
| 
			
			 Возьми свет!!! 
		
			
	 | 
	
	
	
		
		
		
		 
			
			 зато очень просто читать вот такое например 
		
		
		
		
		
		
			select count(RecId) from vendTrans where !ventTrans.SettleAmount убейтя я такое прочитать не могу!!! 
				__________________ 
		
		
		
		
	Axapta 3.0 sp 5 Oracle ![]() Я могу взорвать вам мозг!!!  | 
| 
	
 | 
| 
			
			 | 
		#31 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от fed
			 
 
			Еще страшно злит, когда в selectах в явном виде указывают список полей. Причем я могу понять, когда это делают с учетом покрывающего индекса (например только recId извлекают). Но понять, почему те криворукие создания которые AIF разрабатывали, ухитрились напихать списки полей во все запросы - это выше моих возможностей... 
		
	X++: select forupdate BankAccount from custTable where custTable.AccountNum == "Account"; custTable.BankAccount = "BankAccount"; custTable.update();  | 
| 
	
 | 
| 
			
			 | 
		#32 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
А надо писать на X++, используя best practices и naming conventions из X++.  | 
| 
	
 | 
| 
			
			 | 
		#33 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от fed
			 
 
			Еще страшно злит, когда в selectах в явном виде указывают список полей. Причем я могу понять, когда это делают с учетом покрывающего индекса (например только recId извлекают). Но понять, почему те криворукие создания которые AIF разрабатывали, ухитрились напихать списки полей во все запросы - это выше моих возможностей... 
		
	Цитата: 
	
		
			If a select statement is local to a method, use a field list to increase performance. If you use  
a select or a while select statement and the size of the fields that are used total less than 50 percent of the total record size, a warning appears if you do not use a field list. Другое дело, что подобная оптимизация порождает трудно отлавливаемые баги если кто-нибудь вдруг догадается добавить вызов display метода не проверив, какие поля он использует. Что самое противное Код:     select Arrived from inventSum;
    print inventSum.AvailOrdered; | 
| 
	
 | 
| 
			
			 | 
		#35 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от mayk
			 
 
			Это вообще-то является BP 
		
	If a select statement is local to a method, use a field list to increase performance. If you use a select or a while select statement and the size of the fields that are used total less than 50 percent of the total record size, a warning appears if you do not use a field list. и существенно ускоряеет выполнение запросов, так как в сеть не пихается туча данных, из которых не используется и половина. 
 Этот пример еще раз подтверждает мою мысль что Аксаптовские Development Best Practice пишутся не для реальных проектов, а для разработки сферического коня в кубе... Последний раз редактировалось fed; 13.06.2012 в 11:31.  | 
| 
	
 | 
| 
			
			 | 
		#36 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
  Это, к моему большому сожалению, не так в большинстве случаев.Так что милости просим к нам на работу, кто хочет изменить положение вещей и привнести реальный опыт внедрения АХ в код на SYS layer.  
		 | 
| 
	
 | 
| 
			
			 | 
		#37 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от kashperuk
			 
 
			Для того, чтобы они писались с учетом опыта реальных проектов, надо чтобы этот опыт у людей был  
		
	  Это, к моему большому сожалению, не так в большинстве случаев.Так что милости просим к нам на работу, кто хочет изменить положение вещей и привнести реальный опыт внедрения АХ в код на SYS layer. ![]()  | 
| 
	
 | 
| 
			
			 | 
		#38 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Дык не идут к нам... 
		
		
		
		
		
		
			
		
		
		
		
	А те, кто идут, не справляются многие с техническими задачами на интервью. Более того, ERP программирование - это чуть специфическая область, а нанимаем мы обычно "for Micorosft", то есть человек этот должен иметь потенциал для продолжения работы в Майкрософт в другой команде, к примеру.  | 
| 
	
 | 
| 
			
			 | 
		#39 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от ice
			 
 
			а что мешает нанять таких спецов? просто в вакансии требования из "плюсов" перенесите в обязательные 
		
	  Ага, наймут спецов - а разработку продолжат аутсорсить в Индию.
		 | 
| 
	
 | 
| 
			
			 | 
		#40 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от kashperuk
			 
 
			Дык не идут к нам... 
		
	А те, кто идут, не справляются многие с техническими задачами на интервью. Более того, ERP программирование - это чуть специфическая область, а нанимаем мы обычно "for Micorosft", то есть человек этот должен иметь потенциал для продолжения работы в Майкрософт в другой команде, к примеру. Просто счас (как мне знакомые из бундеса говорят) у них там некоторый бум аксаптовский: в консультанты берут просто пользователей Аксапты с опытом (но без понимания системы в целом), в программисты просто C#овцев средней руки. Вот и вопрос - кто же это к вам пойдет на средние заработки, под заведомо невменяемый менеджмент и с достаточно мутными перспективами карьеры ? Только соискатели разрешений на работу...  | 
| 
	
 | 
| 
	
	 | 
	
		
			 
			Похожие темы
		 | 
	||||
| Тема | Ответов | |||
| Бага в Query update(true) | 5 | |||
| Не срабатывает skipDatabaseLog(true) | 14 | |||
| visible(true) и курсор | 6 | |||
| recordLevelSecurity(true) | 12 | |||
		
  |