Sullo stile di codifica - pagina 5

 

Dove sono le classi in MQL4, C-4? E credo che gli sviluppatori abbiano detto che non ci sarà alcuna eredità in 5 per il momento.

 
Mathemat >> :

Dove sono le classi in MQL4, C-4? E credo che gli sviluppatori abbiano detto che non ci sarà alcuna eredità nella 5.

C'è già, con tutti i suoi annessi e connessi. E si può vedere anche in Tetris (in fonti mq5).

 

Wow, questo è interessante. Tre mesi dalla pubblicazione del giocattolo, e l'ho appena scoperto...

 
Mathemat >> :

Wow, questo è interessante. Tre mesi dalla pubblicazione del giocattolo e l'ho appena scoperto...

Credo di essermelo perso....

qual è il senso di questa esclamazione "wow"? c'è qualche mt5 là fuori per testare le fonti? se sì, non ti dispiace darmi un link per scaricarlo.

 

Beh, no, MT5 non è ancora visibile (ai comuni mortali), ma almeno si può guardare il codice. È più o meno chiaro cosa aspettarsi.

 

Qualcuno può suggerire un'applicazione che possa analizzare il sorgente MQL e produrre in qualche forma i nomi delle variabili/funzioni usate e il numero delle loro "menzioni" nel testo?

per esempio per catturare resti di variabili inutilizzate dai testi buttati via, e per non rinominare accidentalmente un nome gravemente abbreviato in qualcosa di più lungo e più chiaro, che si rivela essere il nome di una variabile globale, di cui vi siete dimenticati molto tempo fa e che esiste da qualche parte nel codice.

 
YuraZ >> :

Preferisco

se ( a > c )

codret = 3;

se ( l < b )

codret = 5;

...

...

se ( h != b )

codret = 100;


// specialmente se ci sono alcune operazioni aggiuntive comuni a tutte le uscite prima del ritorno

... per esempio qui facciamo qualcos'altro

retrun( codret);

}

Hai appena dato un ottimo esempio del perché io uso uscite multiple di ritorno. Nel vostro esempio, la funzione restituirà l'ultimo if() attivato, non il primo. Nel mio esempio, la funzione restituirà la prima corrispondenza. In pratica, trovo spesso che ho bisogno di restituire esattamente il primo valore corrispondente, e quasi mai devo restituire l'ultimo controllo attivato. In questo esempio, avere un solo ritorno non rende più facile rintracciare i valori restituiti dalla funzione, al contrario, ci si può aspettare tutto da un solo ritorno.

A proposito, personalmente non mi piace separare il carattere cruciale ";" dall'espressione:

extern double max_price[100] ; //memorizza i prezzi dei massimi delle ultime cento barre

extern double max_price[100] ; //tiene i prezzi delle ultime cento barre massimo - scrivo solo così

 
Negli anni '70 c'era una tendenza molto alla moda chiamata "programmazione strutturata". Sono stati scritti molti libri al riguardo. Le frasi più ricordate erano: la funzione dovrebbe stare su un foglio (non c'erano display allora), nessun goto e così tutto il libro. Poi, presumibilmente, tutto si è trasformato in programmazione orientata agli oggetti. Forse stiamo di nuovo reinventando la ruota?
 

No, qui si parla solo di stile. A proposito, in alcuni casi non mi dispiace affatto il goto.

 
C-4 >> :

Perché dichiarare una funzione dentro una funzione? Personalmente, essendo cresciuto solo in C e C++ non capisco questo metodo.

Incapsulamento... Quando si scrivono template e si vuole nascondere una funzione o un funtore o una classe molto locale, è molto utile.

E la maggior parte delle volte puoi cavartela con uno spazio dei nomi senza nome.

2. Odio lo stile molto comune di mettere parentesi graffe come questa:

Molto invano. Un terreno fertile per tutti i tipi di bloopers con le bretelle. In passato, la giustificazione era il risparmio di spazio e la regola della dimensione del codice funzione.

Ma ora, nell'era dei terabyte, perché dovremmo essere dispiaciuti per la mancanza di spazio?

5. Uso funzioni dentro funzioni:

Inefficiente (con diverse chiamate di uno), spalmato e lungo. Soprattutto uno di UB, che è un focolaio di errori maligni non banali.


Ulteriore -- riguardo ai copypastes. Una cosa molto fastidiosa :). Lo confesso, lo uso e faccio errori molto spesso. Per esempio, ho dimenticato di rinominare una variabile, cambiare un commento o altro.

Ecco perché la revisione del codice è una cosa molto utile.


Su Pascal :) . Fino ad ora, è ancora la principale lingua olimpica. Per una semplice ragione: poche parole chiave, struttura logica.

Per molto tempo non ho creduto che il Pascal (o meglio Delphi) fosse peggio del C++, finché non ho scoperto che il C++ era migliore.

Ora penso che il Pascal sia migliore in un modo: è più difficile scrivere codice binario in esso.


>> Poi, riguardo ai commenti, sono tutte stronzate, soprattutto riguardo al 30%.

Scrivete codice auto-documentante e sarete felici. Poiché non ci sono classi in MQL4 è piuttosto difficile da fare. Ma con le lezioni dovrebbe diventare più facile.


Tutto il resto - indentazione, principi di denominazione, allineamento - non sono altro che raccomandazioni.

A proposito, parlando di funzioni. Quale dovrebbe essere il carattere? E se fosse una linea in più? La cosa principale è rendere chiaro cosa fa, e il resto sono solo raccomandazioni.


La cosa più importante è rendere il codice il più comprensibile possibile per coloro che potrebbero mantenerlo.