Caractéristiques du langage mql5, subtilités et techniques - page 121

 
TheXpert:

Je ne le comprends pas alors.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Particularités de mql5, trucs et astuces

Alexey Navoykov, 2019.01.14 16:35

Si vous en avez besoin, vous pouvez déclarer void OnTick() ; au tout début. Mais en général, l'ordre de déclaration des fonctions est un moyen supplémentaire de contrôler la correction du code. Par exemple, si dans un plug-in l'appel OnTick() ou, pire encore, OnInit() se produit, est-ce que c'est bon ? Les bibliothèques ne doivent pas voir votre code de travail.
 
fxsaber:

Alors je ne le comprends pas.

Les déclarations en avant ne concernent que les classes et les structures, pas les fonctions.

 
fxsaber:

Le point est que si les fonctions que vous allez utiliser sont spécifiées dans l'inlude, vous devez les écrire selon la suggestion, si l'inlude est en dessous.

Quel est le problème d'insérer un inluder plus tôt ?

Cela peut être gênant pour un fichier (la fonction avec le corps doit être avant l'appel), mais si la fonction est dans mqh - quel est le problème d'insérer l'inlude au début ?

 
TheXpert:

La déclaration forward ne concerne que les classes et les structures, pas les fonctions.

C'est bien que vous l'ayez clarifié.

Andrey Khatimlianskii:

Quel est le problème d'insérer un inluder plus tôt ?

Cela peut être gênant pour un fichier unique (une fonction avec un corps nécessairement avant l'appel), mais si la fonction est dans mqh - quel est le problème d'insérer un inline au début ?

Certaines constructions avec des macros ont parfois nécessité un inlude sur la dernière ligne. Je ne vous donnerai pas d'exemple précis, je les ai souvent rencontrés dans la pratique.

 
TheXpert:

Les déclarations en avant ne concernent que les classes et les structures, pas les fonctions.

Non, je me trompe aussi. Une fonction a une déclaration et une définition.
 
fxsaber:

Certaines constructions avec des macros nécessitaient parfois un inlude sur la dernière ligne. Je ne vous donnerai pas d'exemple concret, je les ai rencontrés à de nombreuses reprises dans la pratique.

Je ne pense pas que les macros simples valent la peine de sacrifier la correction architecturale pour leur bien.

Quoi qu'il en soit, le code du programme doit en tout cas être exécuté exactement selon l'algorithme prévu. L'accès à une variable avant son initialisation est un non-sens. Cela ne devrait pas compiler.

 

D'ailleurs, si un inlude utilise des fonctions qui ne sont pas là, elles doivent quand même y être déclarées. Tout comme les classes et les variables externes. Sinon, c'est une béquille, pas un inlude.

De même, le plug-in ne doit pas dépendre de l'endroit où il est branché.

 
Alexey Navoykov:
D'ailleurs, si certaines fonctions sont utilisées dans l'inlude, alors qu'elles n'y sont pas, elles doivent quand même y être déclarées. Ainsi que les classes et les variables externes. Sinon, ce n'est pas un inlude, mais une béquille.

Que pensez-vous qu'un inlude est ? Pour moi, c'est juste un morceau de texte, attribué à un fichier séparé. Et sa réintroduction dans la source est ignorée. Rien d'autre.

 
fxsaber:

Que pensez-vous qu'un inlude est ? Pour moi, c'est juste un morceau de texte, attribué à un fichier séparé. Et sa réintroduction dans la source est ignorée. Rien d'autre.

Je pense qu'il devrait s'agir d'un code indépendant et autonome. C'est plus logique, et il est facile de contrôler et de faire des contrôles syntaxiques indépendants sur ce code. Mais si tout est dans des fichiers différents et que l'on ne sait pas clairement d'où il est appelé, c'est le chaos.

 
Alexey Navoykov:

Eh bien, je pense qu'il devrait s'agir d'un code indépendant indépendant. Cela a plus de sens et il est plus facile de contrôler et d'effectuer un contrôle syntaxique indépendant de ce code. Et si tout est éparpillé dans les fichiers et qu'on ne sait pas clairement ce qui est appelé d'où - c'est une sorte de chaos.

J'ai publié des exemples de mon code. Je n'ai pas entendu de retour sur le chaos, même pour les incudes qui ne compilent pas.