¿Declaración de variables detrás del bucle o dentro del bucle? - página 8

 
Alexey Viktorov:
No es posible, definitivamente no es correcto. Sólo un ejemplo: En el bucle, se busca entre las posiciones abiertas. Si obtienes un ticket de posición, lo utilizas para obtener otras propiedades de la posición. Hay dos variantes, o bien en cada función de obtención de la propiedad de la posición insertar PositionGetTicket(i) o escribirlo en una variable una vez y utilizarlo. Pero después de salir del bucle nadie necesita este billete... ¿Por qué declarar esta variable en el cuerpo de la función OnTick() o, aún más interesante, a nivel global?

Creo que no lo he expresado bien ....

Por supuesto, no son necesarios en OnTick(). No sé si es correcto poner los bucles (y las variables que se necesitan allí) en las funciones?

P.D. En general, cualquier proger debería saber dónde se necesita una variable y determinar su área de visibilidad de forma independiente......
 

En general, la cadena plus y la mcl son diferentes. En µl es el tipo fundamental, y está claro que hay más margen de optimización. Por lo tanto, puede ser erróneo hacer esa comparación por ejes. Aunque estoy a favor de la uniformidad con los pluses, no debería estar ahí, así que no debería estar en µl.

 
Vict:

En general, la cadena plus y la mcl son diferentes. En µl, después de todo, es un tipo fundamental, y hay claramente más espacio para la optimización. En consecuencia, puede que no sea correcto hacer una comparación tan torpe. Aunque estoy a favor de la uniformidad con los pluses, no debería estar ahí, así que no debería estar en µl.

¿Habla usted bielorruso? ¿No? ¿Por qué? La lengua bielorrusa está bastante más cerca del eslavo antiguo. ¿Vamos a hablar ruso en lugar de eslavo antiguo? Al parecer, es necesario utilizar el bielorruso...

Me voy a cabrear otra vez... Pero, una vez más, el SI y el MQL son idiomas diferentes. A pesar de que uno se basó en el otro....

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

Tal vez no lo expresé bien ....

Por supuesto, no son necesarios en OnTick(). No sé, ¿tal vez sea correcto poner los bucles (y las variables que se necesitan allí) en funciones?

P.D. Y en general, cualquier proger debería saber dónde necesita una variable y determinar su área de visibilidad por sí mismo......

Aquí están las palabras de oro.

Y poner un bucle en una función externa, si se usa sólo una vez en el código, depende de lo que permita la religión. Mucha gente ahora se adhiere a la POO y pone cada cosa en clases o macros. Esta moda se ha hecho popular.

 
Alexey Viktorov:

Y poner el bucle en una función externa, si se utiliza una sola vez en el código, es una cuestión de religión.

Para añadir una palabra a su vocabulario - esta religión se llama SOLID

 

Para los que creen en un compilador inteligente. A continuación se muestra una parte del código del script.

El código fuente está en el archivo adjunto.

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()
  {

  }

Las estructuras son completamente estáticas, el arrayleaf_rs puede ser completamente descartado.OnStart() está vacío. Como resultado, el tamaño del archivo compilado es de casi 2 Mbytes.

Archivos adjuntos:
test_3.zip  418 kb
 
Igor Makanu:

Para añadir palabras a su vocabulario - esta religión se llama SOLID

Igor, ¿cuánto más viejo es tu padre que yo? Creo que no más de 5 años. ¿Sigue siendo capaz de aumentar su vocabulario? ¿O eres demasiado joven? No busques significados ocultos en mis palabras.
 
Alexey Viktorov:

........

Y poner el bucle en una función externa, si se utiliza una sola vez en el código, es una cuestión de religión. Mucha gente hoy en día se dedica a la POO y pone todo en clases o macros. Ahora está de moda.

Ya hice esta pregunta una vez, pero nunca obtuve respuesta. Exactamente para estos casos, para no utilizar "su" religión, ¿existe una forma estándar de destruir una variable?

Aun así, personalmente no me gusta declarar variables en un bucle. Prefiero declararlos antes, pero ¿cómo los destruyo después? ...... Por eso la función. Tras salir de él, las variables internas se destruyen. (???)

No puedo decir nada sobre la OOP. No entiendo por qué es necesario ))))))) Obsoleto, probablemente ))))))))))

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

Ya he preguntado una vez, pero no me han contestado. Exactamente para estos casos, para no utilizar "su" religión, ¿existe una forma estándar de destruir una variable?

Sin embargo, personalmente no me gusta declarar variables en un bucle. Prefiero declararlos antes, pero ¿cómo los destruyo después? ...... Por eso la función. Tras salir de él, las variables internas se destruyen. (???)

No puedo decir nada sobre la OOP. No entiendo por qué es necesario ))))))) Obsoleto, probablemente ))))))))))

No lo entiendo, ¿verdad?

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

Dudo que no lo supieran.

 
Alexey Viktorov:
Igor, ¿tu padre no es mucho mayor que yo?

1953-2008 padre

1953-2019 suegro