[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 91

 
paladin80:
Добрые люди подскажите (или киньте линк, где мой вопрос обсуждался), какая конструкция по быстродействию лучше 1 или 2:

2.

так как мы точно не уверены, что в МТ4 операции && проверяются по порядку, с прерыванием при false

 
sergeev:

2.

так как мы точно не уверены, что в МТ4 операции && проверяются по порядку, с прерыванием при false

Спс за инфо, поправлю свой код.
 
paladin80:
Спс за инфо, поправлю свой код.

для экономии чтения я обычно записываю так:

// --- 2
if (Stochastic1<=20) if (signal<value) if (flag>Big_flag) if(Ask<=price)
{
   RefreshRates();
   OrderSend(...);
}
 
sergeev:

для экономии чтения я обычно записываю так:


Спс за эту подсказку, а то я немного дипреснулся когда подумал "сколько же мне надо будет кавычек дописать, ни одной не пропустить и в нужные места вставить". Возможность такай записи вернула меня к жизни.
 
paladin80:
Возможность такай записи вернула меня к жизни.

просто помните, что если в цикле/условии есть только один оператор, то кавычки можно не использовать.

главное, не попасться на вложенных условиях типа:

if (cond1)
{
  if (cond2) operator1;
  else operator2;
}

записывать вот так нельзя:

if (cond1)
  if (cond2) operator1;
  else operator2;

так как оператор else непонятно к чему относится
к cond1 или cond2.
 

Совет понятен. А есть ли противопоказания к использованию || (или), напр тут:

if (signal<value || flag>Big_flag)
{  RefreshRates();
   OrderSend(...);
}

.

 
sergeev:

просто помните, что если в цикле/условии есть только один оператор, то кавычки можно не использовать.

главное, не попасться на вложенных условиях типа:

if (cond1)
{
  if (cond2) operator1;
  else operator2;
}

записывать вот так нельзя:

if (cond1)
  if (cond2) operator1;
  else operator2;

так как оператор else непонятно к чему относится
к cond1 или cond2.

Вообще-то тут вроде как все однозначно: else относится к ближайшему раннему if, не закрытому else. Или я тут чего-то не понимаю?

Но в любом случае, если есть сомнения, лучше ставить всевозможные скобки - и фигурные, и круглые. Я стараюсь так делать всегда, если структура нетривиальна.

 
paladin80:

Совет понятен. А есть ли противопоказания к использованию || (или), напр тут:

не, ну знак || уже не раскидаешь на if "подряд".

разве что через промежуточную переменную

bool b1=A1 || A2; // тут можно длинные условия лепить

if (b1) // а тут b1 можно сочетать с разными другими условиями
 
Mathemat:

Вообще-то тут вроде как все однозначно: else относится к ближайшему раннему if, не закрытому else. Или я тут чего-то не понимаю?

Но в любом случае, если есть сомнения, лучше ставить всевозможные скобки - и фигурные, и круглые. Я стараюсь так делать всегда, если структура нетривиальна.


прогер можето запросто ошибиться, имея ввиду такое

if (cond1)  
{  if (cond2) operator1; }
else operator2;

а не такое

if (cond1)
{
  if (cond2) operator1;
  else operator2;
}

понимаешь?

 

Понимаю, конечно. Но опытный кодер так не ошибется, потому что поставит фигурные скобки сразу там, где надо, даже если там еще ничего нет :)

А неопытный, который экономит на скобках и строках (как будто это бумага), конечно, сильнее подвержен риску ошибиться.

Я просто сказал о правиле парсинга, принятом в современных языках, если фигурных скобок нет.

Причина обращения: