Dichiarare le variabili dietro il ciclo o dentro il ciclo? - pagina 8

 
Alexey Viktorov:
Non è possibile, sicuramente non è giusto. Solo un esempio: Nel ciclo, si guardano le posizioni aperte. Si ottiene un biglietto di posizione, lo si usa per ottenere altre proprietà della posizione. Ci sono due varianti, o in ogni funzione di ottenere la proprietà della posizione inserire PositionGetTicket(i) o scriverlo in una variabile una volta e usarlo. Ma quando il ciclo è uscito questo biglietto non è necessario... Perché dichiarare questa variabile nel corpo della funzione OnTick() o ancora più interessante a livello globale?

Forse non mi sono espresso bene....

Naturalmente non sono necessari in OnTick(). Non so se è giusto mettere i loop (e le variabili necessarie) nelle funzioni?

P.S. In generale, qualsiasi proger dovrebbe sapere dove una variabile è necessaria e determinare la sua area di visibilità in modo indipendente......
 

In generale, string plus e mcl sono diversi. In µl è il tipo fondamentale, e c'è chiaramente più spazio per l'ottimizzazione. Pertanto, può essere sbagliato fare un tale confronto per assi. Anche se sono a favore dell'uniformità con i plus - non dovrebbe esserci, quindi non dovrebbe essere in µl.

 
Vict:

In generale, string plus e mcl sono diversi. In µl, dopo tutto, è un tipo fondamentale, e c'è chiaramente più spazio per l'ottimizzazione. Di conseguenza, potrebbe non essere corretto fare un paragone così maldestro. Anche se sono a favore dell'uniformità con i plus - non dovrebbe esserci, quindi non dovrebbe essere in µl.

Parla bielorusso? No? Perché? La lingua bielorussa è significativamente più vicina allo slavo antico. Parleremo in russo invece che in slavo antico? A quanto pare, è necessario usare il bielorusso...

Mi incazzo di nuovo... Ma, ancora una volta, il SI e il MQL sono lingue diverse! Nonostante il fatto che uno fosse basato sull'altro....

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

Forse non mi sono espresso bene....

Naturalmente non sono necessari in OnTick(). Non so, forse è giusto mettere i loop (e le variabili necessarie) nelle funzioni?

P.S. E in generale, ogni proger stesso dovrebbe sapere dove si trova una variabile di cui ha bisogno e determinare indipendentemente la sua visibilità area......

Ecco le parole d'oro.

E mettere un ciclo in una funzione esterna, se viene usato solo una volta nel codice, dipende da cosa permette la religione. Molte persone ora si attengono alla OOP e mettono ogni piccola cosa in classi o macro. Una tale moda è diventata popolare.

 
Alexey Viktorov:

E mettere il ciclo in una funzione esterna, se viene usato solo una volta nel codice, è una questione di religione.

Per aggiungere una parola al vostro vocabolario - questa religione si chiama SOLID

 

Per coloro che credono in un compilatore intelligente. Una parte del codice dello script è mostrata qui sotto.

Il codice sorgente è nel file allegato.

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

  }

Le strutture sono completamente statiche, l'arrayleaf_rs può essere completamente scartato.OnStart() è vuoto. Di conseguenza, la dimensione del file compilato è quasi 2 Mbyte.

File:
test_3.zip  418 kb
 
Igor Makanu:

Per aggiungere parole al vostro vocabolario - questa religione si chiama SOLID

Igor, quanto è più vecchio di me tuo padre? Penso non più di 5 anni. È ancora in grado di aumentare il suo vocabolario? O sei troppo giovane? Non cercare significati nascosti nelle mie parole.
 
Alexey Viktorov:

........

E mettere il ciclo in una funzione esterna, se viene usato solo una volta nel codice, è una questione di religione. Molte persone oggi sono in OOP e mettono ogni piccola cosa in classi o macro. Ora è una moda.

Ho già fatto questa domanda una volta, ma non ho mai ricevuto una risposta. Esattamente per questi casi, per non usare la "loro" religione, c'è un modo standard di distruggere una variabile?

Tuttavia, personalmente non mi piace dichiarare le variabili in un ciclo. Preferisco dichiararli prima, ma come li distruggo dopo? ...... Ecco perché la funzione. Dopo essere usciti, le variabili interne vengono distrutte. (???)

Non posso dire nulla su OOP. Non capisco proprio perché sia necessario ))))))) Obsoleto, probabilmente ))))))))))

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

L'ho già chiesto una volta, ma non ho avuto risposta. Esattamente per questi casi, per non usare la "loro" religione, c'è un modo standard per distruggere una variabile?

Personalmente non mi piace dichiarare le variabili in un ciclo, però. Preferisco dichiararli prima, ma come li distruggo dopo? ...... Ecco perché la funzione. Dopo essere usciti, le variabili interne vengono distrutte. (???)

Non posso dire nulla su OOP. Non capisco proprio perché sia necessario ))))))) Obsoleto, probabilmente ))))))))))

Non lo capisco, vero?

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

Dubito che non lo sapessero.

 
Alexey Viktorov:
Igor, tuo padre non è molto più vecchio di me?

1953-2008 padre

1953-2019 suocero

Motivazione: