À propos du style de codage - page 5

 

Où sont les classes de MQL4, C-4? Et je pense que les développeurs ont dit qu'il n'y aura pas d'héritage en 5 pour le moment.

 
Mathemat >> :

Où sont les classes de MQL4, C-4 ? Et je crois que les développeurs ont dit qu'il n'y aura pas d'héritage en 5.

C'est déjà le cas, avec toutes les subtilités que cela implique. Et vous pouvez le voir même dans Tetris (dans les sources mq5).

 

Wow, c'est intéressant. Trois mois depuis la publication du jouet, et je viens seulement de découvrir...

 
Mathemat >> :

Wow, c'est intéressant. Trois mois depuis la publication du jouet et je viens seulement de découvrir...

Je pense que je l'ai peut-être manqué. ....

quel est l'intérêt de cette exclamation "wow" ? existe-t-il un mt5 pour tester les sources ? si oui, ne vous gênez pas pour me donner un lien pour le télécharger.

 

Eh bien, non, le MT5 n'est pas encore visible (pour les simples mortels), mais au moins vous pouvez regarder le code. On sait à peu près à quoi s'attendre.

 

Quelqu'un peut-il suggérer une application capable d'analyser des sources MQL et d'afficher sous une forme quelconque les noms des variables/fonctions utilisées et le nombre de leurs "mentions" dans le texte ?

par exemple pour attraper les restes de variables inutilisées dans les textes jetés, et pour ne pas renommer accidentellement un nom sévèrement abrégé en quelque chose de plus long et plus clair, qui s'avère être le nom d'une variable globale, dont vous avez oublié l'existence il y a longtemps et qui existe quelque part dans le code.

 
YuraZ >> :

Je préfère

si ( a > c )

codret = 3 ;

si ( l < b )

codret = 5 ;

...

...

si ( h != b )

codret = 100 ;


// surtout s'il y a des opérations supplémentaires communes à toutes les sorties avant le retour.

... par exemple, ici nous faisons quelque chose d'autre

retransmission( codret) ;

}

Vous venez de donner un excellent exemple de la raison pour laquelle j'utilise des sorties de retour multiples. Dans votre exemple, la fonction renverra le dernier if() déclenché, et non le premier. Dans mon exemple, la fonction renverra la première correspondance. En pratique, je constate souvent que je dois retourner exactement la première valeur satisfaisant la condition, et je n'ai presque jamais besoin de retourner la dernière vérification déclenchée. Dans cet exemple, le fait de n'avoir qu'un seul retour ne facilite pas le suivi des valeurs renvoyées par la fonction, au contraire, on peut tout attendre d'un seul retour.

À propos, je n'aime pas, personnellement, séparer le caractère crucial " ;" de l'expression :

extern double max_price[100] ; //stocke les prix des maxima des cent dernières barres

extern double max_price[100] ; //Maintient les prix des cent dernières barres maximum - je n'écris que de cette façon

 
Dans les années 70, il y avait une tendance très à la mode appelée "programmation structurée". De nombreux livres ont été écrits à ce sujet. Les phrases dont on se souvient le plus sont : la fonction doit tenir sur une feuille (il n'y avait pas d'écrans à l'époque), pas de goto, et donc tout le livre. Puis, soi-disant, tout s'est transformé en programmation orientée objet. Peut-être réinventons-nous à nouveau la roue ?
 

Non, nous parlons juste de style ici. D'ailleurs, dans certains cas, goto ne me dérange pas du tout.

 
C-4 >> :

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

Encapsulation... Lorsque vous écrivez des modèles et que vous voulez cacher une fonction, un foncteur ou une classe très locale, c'est très utile.

Et la plupart du temps, vous pouvez vous en sortir avec un espace de noms sans nom.

2. Je déteste le style très courant qui consiste à mettre des parenthèses courbes comme ça :

En vain. Un terrain propice à toutes sortes de bêtises avec des bretelles. Dans le passé, la justification était le gain de place et la règle de la taille du code de fonction.

Mais aujourd'hui, à l'ère des téraoctets, pourquoi devrions-nous regretter le manque d'espace ?

5. J'utilise des fonctions à l'intérieur de fonctions :

Inefficace (avec plusieurs appels d'un seul), étalé et long. Surtout une UB, qui est un foyer d'erreurs malveillantes non triviales.


En outre... à propos des copypastes. C'est très ennuyeux :). Je l'avoue, je l'utilise et je fais des erreurs très souvent. Par exemple, j'ai oublié de renommer une variable, de modifier un commentaire ou autre.

C'est pourquoi la révision du code est une chose très utile.


A propos de Pascal :) . Jusqu'à présent, c'est toujours la langue principale des Olympiades. Pour une raison simple : peu de mots-clés, structure logique.

Pendant longtemps, je n'ai pas cru que le Pascal (ou plutôt Delphi) était pire que le C++, jusqu'à ce que je découvre que le C++ était meilleur.

Maintenant, je pense que le Pascal est meilleur dans un sens : il est plus difficile d'y écrire du code binaire.


>> Ensuite, à propos des commentaires, c'est n'importe quoi, surtout à propos des 30%.

Ecrivez du code auto-documenté, et vous serez heureux. Comme il n'y a pas de classes dans MQL4, c'est plutôt difficile à faire. Mais avec des cours, ça devrait être plus facile.


Tout le reste - indentation, principes de nommage, alignement - n'est rien d'autre que des recommandations.

Au fait, en parlant de fonctions. Quelle doit être la police de caractères ? Et si c'est une ligne de plus ? L'essentiel est d'indiquer clairement ce qu'il fait, et le reste n'est que recommandations.


La chose la plus importante est de rendre le code aussi compréhensible que possible pour ceux qui pourraient le maintenir.