Il mio approccio. Il nucleo è il motore. - pagina 139

 
Georgiy Merts:

State tutti convincendo Peter dei benefici dell'OOP?

Artyom Trishkin:

Stai sprecando il fiato.

Avete ragione, so tutto questo e lo capisco molto bene. Ma a quanto pare Peter tocca alcune corde mentali della mia anima OOP con il suo "non voglio, non voglio", così cado costantemente in queste spiegazioni, discussioni e battibecchi senza fine.

 
Реter Konow:

E il motore caricherà i kernel da un file di testo. Non è difficile da fare.

Oh, capisco. Sì, così va meglio. Quindi il vostro kernel è un file di testo - essenzialmente un gruppo di impostazioni per il motore.

 
Реter Konow:

No, Vasiliy, tu tendi a drammatizzare tutto)).

C'è un pulsante nel costruttore che, se cliccato, stampa tutti i file.

E il motore caricherà i kernel da un file di testo. Non è difficile da fare.

Scusate l'interruzione, ma mi chiedevo - come dovrebbe essere fatto il refactor? per esempio cambiare i nomi sbagliati o in generale la composizione/posizione degli elementi

 
Vasiliy Sokolov:

Oh, capisco. Sì, così va meglio. Quindi il vostro kernel è un file di testo - essenzialmente un gruppo di impostazioni per il motore.

Sì. Esattamente. Tutte le informazioni necessarie al motore per riprodurre una particolare GUI e lavorare con essa. In questo momento lo sto installando direttamente sul motore, e poi lo renderò caricabile dal file che il costruttore stampa.

 
Maxim Kuznetsov:

Scusate l'interruzione, ma mi chiedevo - come dovrebbe funzionare il refactor? per esempio cambiare i nomi cattivi o la composizione/posizione degli elementi in generale

Questo è tutto nel costruttore. Il codice KIB viene scritto e il file viene ricompilato.

Ecco come lavorare con il costruttorehttps://www.mql5.com/ru/blogs/post/717782

 
Vasiliy Sokolov:

O un altro esempio. Recentemente mi è stato chiesto di modificare un Expert Advisor procedurale in modo che potesse operare simultaneamente su diversi simboli (in esecuzione su un grafico). Lo stile procedurale avrebbe richiesto sforzi lunghi e complessi per farlo commerciare indipendentemente su diversi simboli allo stesso tempo. Al contrario, ho semplicemente messo l'intero codice procedurale in una classe e creato tre esemplari. Ho specificato un set individuale di impostazioni per ciascuno di essi, compreso il simbolo di lavoro, ecc. Il codice ha funzionato correttamente al primo tentativo. Il codice ha funzionato come avrebbe dovuto al primo tentativo. L'utente era soddisfatto.

Ho avuto un esempio simile questa settimana, mi è stato chiesto di fare un Expert Advisor che apre a comprare all'apertura di una barra in un TF e apre a vendere all'apertura di una barra in un altro).

Ma ho riscritto una funzione banale per definire una nuova barra in una classe e ho creato 2 istanze della classe per definire una nuova barra. Ho passato il timeframe del TF come parametro durante l'inizializzazione del costruttore

5 minuti di lavoro, ma è garantito che tutto funzionerà e non ci sarà confusione con i nomi delle funzioni NewBar_TF1() , NewBar_TF2() .... proprio come è conveniente inizializzare dopo le modifiche delle impostazioni da parte dell'utente - cancellare l'oggetto in DeInit(), creare l'oggetto in ONInit()

imho, OOP è conveniente e pratico

 
Реter Konow:

Questo è tutto nel costruttore. Il codice KIB viene scritto e il file viene ricompilato.

Ecco come lavorare con il costruttorehttps://www.mql5.com/ru/blogs/post/717782

Ma sovrascriverà tutte le modifiche e i binding personalizzati che sono negli eventi?
 
Реter Konow:

Sì. Esattamente...

Ecco perché c'è molta confusione con il tuo motore con altri. Date nomi non standard agli elementi del vostro sistema. Non un kernel - ma un file di configurazione autogenerato.

 
Maxim Kuznetsov:
Ma sovrascriverà tutte le modifiche dell'utente che sono negli eventi?

Spiegare ulteriormente.

 
Vasiliy Sokolov:

Ecco perché c'è molta confusione con il tuo motore e perché gli altri si confondono. Date nomi non standard agli elementi del vostro sistema. Non un kernel - ma un file di impostazioni autogenerato.

Quindi il file è il kernel stampato. Ce n'è più di uno.

Motivazione: