Lógica de aprendizagem - página 9

 

Sim :) Eu estava exagerando um pouco.

Aqui está outro exemplo :) mas duvido que funcione em MQL, que funcione em C++:

for (int i = OrdersTotal(); i--;)
{
   if (!OrderSelect(i - 1, SELECT_BY_POS)) continue;

   //...
}
 
Mathemat:

Afinal de contas, para venda?

Ora, ora, ora. Temos um operando lógico dentro, e eu o li mal. Acontece que é verdade quando

- É isso?

Bem, então é uma merda ao quadrado. O código é ilegível :)


O código é bastante legível. Você não deveria estar.
 

Para evitar ter que decifrar o significado (qualquer ordem de venda), faria mais sentido escrever os identificadores dos tipos de ordem. Seria mais curto, mas muito mais claro.

Em termos de brevidade, sim, é uma solução, mas não muito confiável. O desenvolvedor não garante que os valores numéricos destas constantes nunca mudarão.

 
Mathemat:

Para evitar ter que decifrar o significado (qualquer ordem de venda), faria mais sentido escrever os identificadores dos tipos de ordem. Seria mais curto, mas muito mais claro.

Em termos de brevidade - sim, esta é uma solução, mas não muito confiável. O desenvolvedor não garante que os valores numéricos dessas constantes nunca mudarão.


Esse é o problema. É possível fazer um código sofisticado que de repente deixa de funcionar.
 
TheXpert:

Aqui está outro exemplo :) mas é pouco provável que funcione corretamente em MQL, funcionará em C++:

for (int i = OrdersTotal(); i--;)
{
   if (!OrderSelect(i - 1, SELECT_BY_POS)) continue;

   //...
}
Não o verifiquei, mas eu mesmo não o escreveria dessa maneira.
 
TheXpert:

Sim :) Eu estava exagerando um pouco.

Aqui está outro exemplo :) mas é improvável que funcione corretamente em MQL, que funcione em C++:


Isto não é otimização, mas perversão... Perdoe-me, é uma perversão...

Uma pequena e agradável tarefa veio à mente: como trocar valores entre duas variáveis numéricas sem usar a terceira. ))

 
Vinin:
Você pode fazer um código sofisticado que de repente deixa de funcionar.

Esse é o ponto principal - este código não é elegante. Isto é mais elegante:

bool IsActiveType(int orderType)
{
   return (type == OP_BUY || type == OP_SELL);
}

bool IsAnySellType(int orderType)
{
   return (type == OP_SELL || type == OP_SELLLIMIT || type == OP_SELLSTOP);
}

{
   if (IsActiveType(OrderType()))
   {
      //...
   }

   if (IsAnySellType(OrderType()))
   {
      //...
   }
}

denis_orlov:

Isto não é otimização, é perverso... Perdoe-me...

Lembro-me de uma pequena tarefa agradável como trocar valores entre duas variáveis numéricas sem usar a terceira. ))

Sim :) mais ou menos.
 
TheXpert:

Esse é o ponto principal - este código não é elegante. Este aqui é mais elegante:

Sim, é isso mesmo. As funções do corpo de uma linha nunca foram canceladas, elas são realmente muito úteis.
 
TheXpert:

Esse é o ponto principal - este código não é elegante. Este aqui é mais elegante:


Eu gosto disso. Está lindo.
 
TheXpert:

Esse é o ponto principal - este código não é elegante. Isto é mais elegante:



Basta remover os parâmetros de função para torná-la mais intrincada. Se o parâmetro não estiver definido, então determine a partir de OrderType() da ordem, se estiver definido, então pelo parâmetro.

Estou entediado aqui :))))