Один результат, разный код , как правильнее ??? - страница 2

 

Сорри не туда отправил, это вам к телепатам, как вы думаете, откуда мы можем знать что находится вот здесь ?

work();
minus ();

 да еще от это ваше условие :

if (pi==0||TimeCurrent ( )> =(ti+60))

 хотя наверное все таки это был отсыл к названию той темы.

 

А чего в нем не правильно то 

if (pi==0||TimeCurrent ( )> =(ti+60))

 Ок согласен можно было и так 

if (TimeCurrent ( )> =(ti+60))

 тут была функция подсчета ордеров и их модификации 

work();
minus ();
 

все правильно с одной стороны,и не правильно с другой - сложносоставное условие может обрабатываться по разному и соответственно требовать разное время на исполнение.

 

как будет быстрее и правильнее ???

if (tip==1 ....2...3....4)
{
   if (tip==2)
   a=b+c;
   if (tip==3)
   a=b+c;
   if (tip==4)
   a=b+c;
   if (tip==5)
   a=b+c;
   if (......)
   a=b+c;
}

Или

switch(......)
{  
   case 0:
      a=b+c;break;
   case 1:
      a=b+c;break;
   case 2:
      a=b+c;break;
   case 3:
      a=b+c;break;
   case 4:
      a=b+c;break;
}
 

как будет быстрее и правильнее ???

if (1==1&&2==2&&3==3)

или

if (1==1)
  if (2==2)
    if (3==3)
 

как будет быстрее и правильнее ???

if (1==1&&2==2 || 3==3)

или

if (1==1&2==2)
  
  else

     if (3==3)
 

1. Избегайте вложенных условий. Вложенность усложняет восприятие.

2. Объединяйте проверку условий для выполнения одной задачи в одном if.

 

В данном случае как будет быстрее и правильнее ???

for(i=OrdersTotal()-1; i>=0; i--      )
   if (OrderSelect(i,SELECT_BY_POS)      )
      if (OrderSymbol()==Symbol()           )
         if (OrderMagicNumber()==Magic         )

или

for(i=OrdersTotal()-1; i>=0; i--      )
   if (OrderSelect(i,SELECT_BY_POS)==true&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
 

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

for(int i = 0; i < OrdersTotal(); i++)
{
   //Выбираем ордер 
   if(!OrderSelect(i, SELECT_BY_POS))continue;
   //Ордер должен принадлежать текущему символу
   if(OrderSymbol() != Symbol())continue;
   //Ордер должен принадлежать нашему эксперту
   if (OrderMagicNumber() != Magic)continue;
}

Это относится ко всем примерам, которые вы с таким остервенением здесь публикуете.

И хотя все это имхо, преимущества данной схемы в том, что достаточно закомментировать какое-нибудь условие, что бы его выключить.

 
C-4:

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

Это относится ко всем примерам, которые вы с таким остервенением здесь публикуете.

И хотя все это имхо, преимущества данной схемы в том, что достаточно закомментировать какое-нибудь условие, что бы его выключить.

Успокойтесь и не нервничайте
Я спросил повторно потому, что Вы вторым вариантом написали "2. Объединяйте проверку условий для выполнения одной задачи в одном if."

и сразу вопрос по ходу

Почему Вы делаете перебор ордеров таким образом

for(int i = 0; i < OrdersTotal(); i++)
{
   //Выбираем ордер 
   if(!OrderSelect(i, SELECT_BY_POS))continue;
   //Ордер должен принадлежать текущему символу
   if(OrderSymbol() != Symbol())continue;
   //Ордер должен принадлежать нашему эксперту
   if (OrderMagicNumber() != Magic)continue;
}

а не таким ???

for(i=OrdersTotal()-1; i>=0; i--      )
   if (OrderSelect(i,SELECT_BY_POS)      )
      if (OrderSymbol()==Symbol()           )
         if (OrderMagicNumber()==Magic         )
Причина обращения: