Discussion de l'article "Better Programmer (Partie 01): Vous devez arrêter de faire ces 5 choses pour devenir un programmeur MQL5 performant" - page 2

 

Bon article. Le concept de ce qu'il faut faire et ne pas faire est bien expliqué.

Les erreurs dans les exemples spécifiques ne réduisent pas la valeur de l'article, car son objectif est d'aider les gens à optimiser leur style de travail. Cette tâche est résolue avec brio, tout est écrit de la manière la plus simple et la plus claire possible.

Merci, Omega !

 
fxsaber #:

  • La première valeur de la variable dans la boucle est erronée.
  • Au lieu d'un if, il y en a deux.
  • La comparaison de chaîne (caractère) doit se faire à la fin.
  • les expressions bool ne sont pas entre crochets.
  • La variable magique est manquante dans les fonctions d'entrée.
  • L'objet position n'a pas été créé.
Je n'ai pas vu l'erreur la première fois jusqu'à ce qu'elle soit publiée parce que je ne l'ai pas codée dans le méta-éditeur mais juste pendant que je l'écrivais, mais ce n'est pas un gros problème parce que, soit dit en passant, tous les exemples de codage utilisés auraient dû seulement spécifier
 

Intéressant...

fxsaber #:

  • La première valeur de la variable dans la boucle est incorrecte.
  • Au lieu d'un if, il y a deux ifs.
  • La comparaison de chaînes de caractères (symbole) devrait être à la fin.
  • Les expressions bool ne sont pas marquées par des crochets.
  • La variable magique est manquante dans les fonctions d'entrée.
  • L'objet position n'est pas créé.

Devenir un bon programmeur (partie 1) : se débarrasser de cinq habitudes pour devenir un meilleur programmeur MQL5

 
Aliaksandr Hryshyn #:

Intéressant....


:)
 
Aliaksandr Hryshyn #:

Intéressant...

Devenir un bon programmeur (partie 1) : se débarrasser de cinq habitudes pour devenir un meilleur programmeur MQL5

Il s'agit d'un travail en freelance, les clients ne comprennent souvent pas du tout le code, et les mauvaises critiques ne sont pas liées à la qualité du code. Je l'ai écrit, le programme n'a pas rapporté, alors voici la critique.

 

A lire absolument (et l'auteur de l'article encore plus) : 97 Things Every Programmer Should Know (97 choses que tout programmeur devrait savoir)

GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitioners.
GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitioners.
  • github.com
Pearls of wisdom for programmers collected from leading practitioners. - GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitio...
 
Source :
int CountPosByType(ENUM_POSITION_TYPE type)
  {
   int counter = 0;
   for(int i=PositionsTotal(); i>=0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type)
            { 
                counter++; 
            }
   return counter;
  }

Variante plus rapide et, à mon avis, plus claire :

int PositionsByType(ENUM_POSITION_TYPE type)
  {
   int counter = 0;
   for(int i=PositionsTotal()-1; i>=0; i--)
   {
      if(!m_position.SelectByIndex(i))
         return (INVALID_HANDLE);

      if(m_position.PositionType()!=type ||
         m_position.Magic()!=MagicNumber ||
         m_position.Symbol()!=Symbol())
         continue;

      counter++; 
   }
   return counter;
  }

1. l'erreur dans l'initialisation de la boucle est que 1 doit être soustrait de la quantité lorsque nous effectuons le retour en arrière.

2. Si vous n'avez pas pu obtenir la position par l'index de la fonction de bibliothèque, vous devez quitter la boucle avec une erreur et ensuite si vous devez traiter ou répéter la fonction à nouveau, sinon il y a un risque d'obtenir un montant non fiable, et vous travaillez toujours avec des finances, et parfois il y a des montants importants dans la position, et une si petite chose peut conduire à une perte.

3. Vous devez d'abord vérifier les variables bool, puis les énumérations ENUM, et ensuite seulement les variables int, double, string ; si la vérification échoue, passez immédiatement à l'élément suivant de la boucle.

Si vous effectuez des opérations de comparaison via &&, le programme vérifiera nécessairement chaque condition.

4. Le nom de la fonction est également important, il est préférable de choisir PositionsByType, cela semble être une bagatelle, mais lorsque vous allez utiliser cette fonction, vous n'avez pas besoin d'aller dans la bibliothèque et sa table des matières, mais il suffit de commencer à taper le nom standard Positions, et vous aurez plusieurs options pour appeler PositionsTotal, PositionsByType......

5. Vous devez respecter la largeur du code afin de ne pas utiliser le défilement horizontal, ce qui réduit considérablement la lisibilité et la vitesse de développement.


 
Vous avez tort sur ce point :
"Si vous effectuez des opérations de comparaison avec &&, le programme vérifiera nécessairement chaque condition".
La comparaison est effectuée dans l'ordre jusqu'à la première condition fausse.
Par ailleurs, dans de telles situations, vous pouvez également tenir compte de la probabilité que la condition ne soit pas remplie.

 
Aliaksandr Hryshyn #:
Vous avez tort sur ce point :
"Si vous effectuez des opérations de comparaison via &&, le programme vérifiera nécessairement chaque condition".
La comparaison se fait dans l'ordre jusqu'à la première erreur.
D'ailleurs, dans de telles situations, vous pouvez également tenir compte de la probabilité que la condition ne soit pas remplie.

Oui, vous m'avez corrigé correctement, la vérification sera effectuée jusqu'à la première erreur, l'essentiel étant que les petits types de données soient les premiers.

Si les conditions consistent en des fonctions, la plus petite devrait être la première et jusqu'à la plus grande du point de vue des ressources consommées, mais sans briser la logique du programme...

J'utilise cette technique dans tous mes projets, le gain de vitesse est perceptible pour un testeur en mode optimisation.

[Supprimé]  
Vitaly Muzichenko #:

Il s'agit d'un travailleur indépendant, les clients ne comprennent souvent pas du tout le code, et les critiques ne portent pas sur la qualité du code. Vous l'avez écrit, le programme ne vous a pas rapporté, c'est la critique.

En informez-vous le client à l'avance, ou l'argent est-il plus important ?