À propos du style de codage - page 4

 
Mathemat >> :

Yura, votre exemple avec un seul retour, bien sûr, est logique. Mais attention, dans ce cas, tous les ifs sont toujours exécutés, contrairement au cas avec de nombreux return, où la sortie de la fonction est obtenue immédiatement après avoir atteint la chaîne avec la condition.

ForexTools, merci, j'ai adopté vos idées sur le formatage.

Mathemat, parce que l'opérateur conditionnel "if" a aussi une astuce comme "else".

if(expression1) operator1 ;

else if(expression2) operator2 ;

else if(expression3) operator3 ;

sinon opérateur4 ;

Et puis l'opérateur est exécuté après la première condition vraie et c'est tout. Tous les "si" ne sont pas exécutés plus loin. Si une condition vraie est trouvée, l'opérateur correspondant est exécuté et le programme continue après cette construction (pas d'autre recherche dans la construction).

 

Je ne discute pas, Sergei. Je parlais du design de Jura ici.

 

Il existe une autre question intéressante pour "stimuler" la discussion : dans quelle mesure les limitations de la plate-forme affectent-elles le style d'écriture d'un programme MQL ? Par exemple : le code est plus facile à écrire, à comprendre/à lire et à maintenir si des calculs logiquement isolés sont effectués dans des fonctions distinctes. Mais chaque appel d'une fonction (surtout dans un interpréteur, comme MQL) est une opération qui prend du temps. Un appel unique n'est bien sûr pas critique, mais la plupart d'entre nous doivent écrire de telles choses dans une boucle (for int i=0 ; i<Bars ; i++) etc. Et c'est ici que nous commençons à décider ce qui est le plus important - un code agréable (sous forme de fonctions - pour que nous comprenions plus tard ce que nous avons écrit) ou la vitesse de son exécution (copie de fragments similaires - pour que votre boucle puisse fonctionner tout le temps avant le prochain tic-tac).

Il est clair que dans chaque cas - la décision de la ligne du juste milieu est différente, mais..... Qui résout ce problème ?

 

J'ai publié les résultats d'une courte étude dans le même fil de discussion, sur la première page. Avec ma quantité de calculs (elle est petite), je suis assez satisfait des fonctions - même avec une longueur de ligne. Mais il y a aussi d'autres opinions dans ce fil.

 
Ce n'est pas ce que je veux dire... Je veux dire dans quelle mesure le style de codage est affecté par la nécessité de prendre en compte les contraintes externes de la plate-forme (n'importe laquelle - pas seulement MT).
 

Cela a probablement un effet. J'avais l'habitude de considérer l'ancienne langue Trubo Pascual comme idéale. Il est possible d'y structurer les fonctions, c'est-à-dire de déclarer les fonctions dans les fonctions. C ne le permet pas. Et c'est exactement ce que j'essaie de faire maintenant, mais essentiellement sur la plate-forme C. Bien sûr, il ne s'agit que d'une apparence extérieure.

Plus précis maintenant, Sergei?

 

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

Comment ça se fait ? Personnellement, j'ai commencé à apprendre les langages de programmation à l'époque avec le C. Maintenant, j'en connais deux : C et C++. Et je dois dire que je ne suis pas du tout attiré par l'étude d'autres langues. Pourquoi dois-je déclarer la fonction dans la fonction ? Personnellement, comme je n'ai grandi qu'en C et C++, je ne comprends pas cette méthode.

 
C-4 >> Pourquoi faut-il déclarer une fonction dans une fonction ? >> Personnellement, comme j'ai grandi uniquement en C et C++, je ne comprends pas cette méthode.

Mais je le comprends maintenant. Si j'ai des fonctions jusqu'au sixième ordre d'appel, il n'est pas toujours pratique pour moi de regrouper toutes les fonctions des différents ordres d'appel dans une seule pile. Il perd la vue d'ensemble de la structure de l'appel. Et dans Trubo Pasqualee, tout est pratique : quelques fonctions principales qui effectuent les traitements essentiels, et toutes les petites sous-fonctions sont cachées à l'intérieur.

Mais c'est probablement une question d'habitude. Je n'ai rien écrit dedans depuis longtemps - et je ne le regrette pas vraiment.

 
C-4 >> :

Pourquoi faut-il déclarer une fonction dans une fonction ? Personnellement, ayant grandi exclusivement en C, C++, je ne comprends pas cette méthode.

"Il y a beaucoup de choses dans le monde, ami Horatio, dont nos sages n'ont jamais rêvé" ;)

Il y a une beauté à cela - l'encapsulation dans l'encapsulation, pour ainsi dire. Mais sérieusement, c'est un outil vraiment utile, si vous l'utilisez à bon escient, comme tout le reste.

Mathemat J'avais l'habitude de penser que l'ancienne langue de Trubo Pascual était parfaite.

Je pense y revenir, au moins sous forme de DLL dans Delphi. Je suis fatigué de travailler en MQL pour faire des choses simples mais nécessaires (par exemple, un dialogue trivial avec le trader).

 

- Quelle est la force, mon frère ?

- Le pouvoir est dans les classes, mon frère !

Je pense que rien de mieux que les cours n'a encore été inventé. Déclarez des fonctions privées à l'intérieur de la classe, et des fonctions publiques pour travailler avec elle. C'est agréable et puissant. Héritez des fonctions et des variables, pensez à la hiérarchie. Encapsuler les données en créant des structures de données complexes. Traitez les données en utilisant les algorithmes universels de la bibliothèque de modèles standard. Pour être franc, l'encapsulation est très faible dans MQL4. Vous devez conserver séparément différents types de données, ce qui entraîne des erreurs. Souvent, nous devons surveiller l'indexation des tableaux (une erreur terriblement ennuyeuse). Je pense que cela sera arrêté dans MQL5.

Raison: