Declarando variáveis atrás do laço ou dentro do laço? - página 8

 
Alexey Viktorov:
Não é possível, definitivamente não é correto. Apenas um exemplo: No laço, você olha através das posições abertas. Você recebe um bilhete de posição, você o usa para obter outras propriedades da posição. Há duas variantes, ou em cada função de obter propriedade de posição insira PositionGetTicket(i) ou escreva-o em uma variável uma vez e use-o. Mas quando o laço é retirado, este bilhete não é necessário. Por que declarar esta variável no corpo da função OnTick() ou ainda mais interessante a nível global?

Talvez eu não tenha colocado bem....

Claro que eles não são necessários na OnTick(). Eu não sei se é correto colocar loops (e as variáveis necessárias lá) em funções?

P.S. Em geral, qualquer proger deve saber onde uma variável é necessária e determinar sua área de visibilidade independentemente......
 

De modo geral, o string plus e o mcl são diferentes. Em µl é o tipo fundamental, e há claramente mais espaço para otimização. Portanto, pode ser errado fazer tal comparação por eixos. Embora eu seja a favor da uniformidade com plumas - ela não deveria estar lá, portanto não deveria estar em µl.

 
Vict:

De modo geral, o string plus e o mcl são diferentes. Em µl, afinal de contas, é um tipo fundamental e há claramente mais espaço para otimização. Conseqüentemente, pode não ser correto fazer uma comparação tão desajeitada. Embora eu seja a favor da uniformidade com plumas - ela não deveria estar lá, portanto não deveria estar em µl.

Você fala bielorrusso? Não? Por quê? A língua bielorrussa está significativamente mais próxima do antigo eslavo. Vamos falar russo em oposição ao antigo eslavo? Aparentemente, é necessário usar o bielorrusso...

Vou ficar chateado novamente... Mas, mais uma vez, o SI e o MQL são idiomas diferentes! Apesar de um ter sido baseado no outro....

 
Сергей Таболин:

Talvez eu não tenha colocado bem....

Claro que eles não são necessários na OnTick(). Não sei, talvez seja correto colocar loops (e as variáveis necessárias lá) em funções?

P.S. E, em geral, qualquer proger próprio deve saber onde uma variável precisa e determinar independentemente sua área de visibilidade......

Aqui estão as palavras de ouro.

E colocar um loop em uma função externa, se ele for usado apenas uma vez em código, depende do que a religião permite. Muitas pessoas agora se apegam ao OOP e colocam tudo em classes ou macros. Tal moda se tornou popular.

 
Alexey Viktorov:

E colocar o loop em uma função externa, se ele for usado apenas uma vez no código, é uma questão de religião.

Para acrescentar uma palavra ao seu vocabulário - esta religião é chamada SOLID

 

Para aqueles que acreditam em um compilador inteligente. Parte do código do roteiro é mostrado abaixo.

O código fonte está em arquivo anexo.

string predictor_names[]={"Time_RSI_ZZ_00","rPeresek_Down","Time_ZZ_02","Speed_1_ZZ_Proc_04"...}

struct sRule
  {
   int               predictor_id;
   bool              more_eq; 
   double            value; 
  };
//Лист дерева(набор правил)
struct sLeaf_r
  {
   int               rules_count;              //Сколько правил
   sRule             rules[32];  //Все правила листа
   double            result_leaf;//Результат листа
  };
//Количество всех листьев 164912
sLeaf_r           leaf_rs[]=
  {
     {3,{{0,0,21.5},{1,1,0.5},{2,0,15.5}},0.0},
     {5,{{0,0,21.5},{1,1,0.5},{2,1,15.5},{3,1,6.5},{4,0,-4.5}},-1.0},
......
......
//Очень много данных
  }

void OnStart()
  {

  }

As estruturas são completamente estáticas, a matrizleaf_rs pode ser completamente descartada.OnStart() está vazia. Como resultado, o tamanho do arquivo compilado é de quase 2 Mbytes.

Arquivos anexados:
test_3.zip  418 kb
 
Igor Makanu:

Para acrescentar palavras ao seu vocabulário - esta religião é chamada SOLID

Igor, quanto mais velho é seu pai do que eu? Penso que não mais do que 5 anos. Ele ainda é capaz de aumentar seu vocabulário? Ou você é muito jovem? Não procure por significados ocultos em minhas palavras.
 
Alexey Viktorov:

........

E colocar o loop em uma função externa, se ele for usado apenas uma vez no código, é uma questão de religião. Muitas pessoas hoje em dia estão no OOP e colocam tudo em classes ou macros. Agora é uma moda.

Já fiz esta pergunta uma vez, mas nunca obtive uma resposta. Exatamente para tais casos, para não usar "sua" religião, existe uma maneira padrão de destruir uma variável?

Ainda assim, eu pessoalmente não gosto de declarar variáveis em loop. Prefiro declará-los antes, mas como posso destruí-los depois? ...... É por isso que a função. Após sair dela, as variáveis internas são destruídas. (???)

Eu não posso dizer nada sobre o OOP. Eu só não entendo por que é necessário ))))))) Obsoleto, provavelmente ))))))))))

 
Сергей Таболин:

Eu perguntei uma vez antes, mas nunca obtive uma resposta. Exatamente para tais casos, para não usar "sua" religião, existe uma maneira padrão de destruir uma variável?

No entanto, pessoalmente não gosto de declarar variáveis em um loop. Prefiro declará-los antes, mas como posso destruí-los depois? ...... É por isso que a função. Após sair dela, as variáveis internas são destruídas. (???)

Eu não posso dizer nada sobre o OOP. Eu só não entendo por que é necessário ))))))) Obsoleto, provavelmente ))))))))))

Eu não entendo, não é mesmo?

if (true) {
        Type var;
        for (...) {
                var.use();
        }
}

Duvido que eles não soubessem.

 
Alexey Viktorov:
Igor, seu pai não é muito mais velho que eu?

1953-2008 pai

sogro 1953-2019