Sullo stile di codifica - pagina 4

 
Mathemat >> :

Yura, il tuo esempio con un solo ritorno, ovviamente, è logico. Ma fate attenzione che in questo caso tutti gli if vengono sempre eseguiti, a differenza del caso con molti return, quando l'uscita dalla funzione si ottiene immediatamente dopo aver raggiunto la stringa con la condizione.

ForexTools, grazie, ho adottato le tue idee sulla formattazione.

Matematico, perché l'operatore condizionale "if" ha anche un espediente come "else".

se(espressione1) operator1;

else if(expression2) operator2;

else if(expression3) operator3;

altro operatore4;

E poi l'operatore viene eseguito dopo la prima condizione vera e questo è tutto. Tutti gli if non vengono eseguiti ulteriormente. Se viene trovata una condizione vera, viene eseguito l'operatore corrispondente e il programma continua dopo questo costrutto (nessuna ulteriore ricerca nel costrutto).

 

Non sto discutendo, Sergei. Qui stavo parlando del design di Jura.

 

C'è un'altra domanda interessante per "stimolare" la discussione: quanto influiscono le limitazioni della piattaforma sullo stile di scrittura di un programma MQL? Per esempio: il codice è più facile da scrivere, capire/leggere e mantenere se i calcoli logicamente isolati sono fatti in funzioni separate. Ma ogni chiamata di una funzione (specialmente in un interprete, come MQL) è un'operazione che richiede tempo. Una singola chiamata non è ovviamente critica, ma la maggior parte di noi deve scrivere queste cose all'interno di un ciclo (for int i=0; i<Bars; i++) ecc. E qui cominciamo a decidere cosa è più importante - un bel codice (sotto forma di funzioni - in modo che poi si capisca cosa abbiamo scritto) o la velocità della sua esecuzione (copiando frammenti simili - in modo che il vostro ciclo possa lavorare tutto il tempo prima che arrivi il prossimo tick).

È chiaro che in ogni caso - la decisione della linea media aurea è diversa, ma.... Chi risolve questo problema?

 

Ho postato i risultati di un breve studio nello stesso thread nella prima pagina. Con la mia quantità di calcoli (è piccola) sono abbastanza soddisfatto delle funzioni - anche con la lunghezza di una linea. Ma ci sono anche altre opinioni qui nel thread.

 
Non è quello che voglio dire... Intendo dire quanto lo stile di codifica è influenzato dalla necessità di considerare i vincoli esterni della piattaforma (qualsiasi - non solo MT)
 

Probabilmente ha un effetto. Consideravo l'antica lingua Trubo Pascual come ideale. Lì è possibile strutturare le funzioni, cioè la dichiarazione di funzioni in funzioni. C non lo permette. E questo è esattamente quello che sto cercando di fare ora, ma essenzialmente sulla piattaforma C. Naturalmente, questa è solo un'apparenza esteriore.

Più preciso ora, Sergei?

 

Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях.

Come diavolo è? Personalmente, ho iniziato a imparare i linguaggi di programmazione ai miei tempi con C. Ora ne conosco due: C e C++. E devo dire che non sono affatto attratto dallo studio di altre lingue. Perché devo dichiarare la funzione nella funzione? Personalmente, essendo cresciuto solo in C e C++, non capisco questo metodo.

 
C-4 >> Perché avete bisogno di dichiarare una funzione in una funzione? >> Personalmente, essendo cresciuto solo in C e C++, non capisco questo metodo.

Ma ora lo capisco. Se ho funzioni fino al sesto ordine di chiamata, non è sempre conveniente per me raggruppare tutte le funzioni di diversi ordini di chiamata in una pila. Si perde la visione d'insieme della struttura delle chiamate. E in Trubo Pasqualee, è tutto conveniente con questo: poche funzioni principali che eseguono l'elaborazione chiave, e tutte le piccole sotto-funzioni sono nascoste all'interno.

Ma probabilmente è una questione di abitudine. Non ci ho scritto niente per molto tempo - e non me ne pento.

 
C-4 >> :

Perché dovete dichiarare una funzione in una funzione? Personalmente, essendo cresciuto esclusivamente in C, C++ non capisco questo metodo.

"Ci sono molte cose nel mondo, amico Orazio, che i nostri saggi non hanno mai sognato" ;)

C'è una bellezza in questo - incapsulamento nell'incapsulamento, per così dire. Ma seriamente, è uno strumento davvero utile, se lo si usa saggiamente, come tutto il resto.

Mathemat Pensavo che l'antica lingua di Trubo Pascual fosse perfetta.

Sto pensando di ritornarci, almeno sotto forma di DLL in Delphi. Sono stanco di lavorare in MQL per fare cose semplici ma necessarie (per esempio, un banale dialogo con il trader).

 

- Qual è la forza, fratello?

- La forza è nelle classi, fratello!

Non credo che sia stato ancora inventato qualcosa di meglio delle classi. Dichiarare funzioni private all'interno della classe e funzioni pubbliche per lavorare con essa. È bello e potente. Ereditare funzioni e variabili, pensare attraverso la gerarchia. Incapsulare i dati creando strutture di dati complesse. Elabora i dati usando gli algoritmi universali dalla libreria di modelli standard. Francamente parlando, l'incapsulamento è molto povero in MQL4. Devi tenere diversi tipi di dati separatamente, il che porta a degli errori. Spesso dobbiamo guardare l'indicizzazione degli array (un errore terribilmente fastidioso). Penso che questo sarà fermato in MQL5.