Styler dans le terminal de trading MetaTrader 5 - page 5

 
Renat :

Messieurs, pour qui le code est-il écrit ?


Je suis presque sûr que c'est pour les autres programmeurs. Il est très désagréable pour eux de lire le code non formaté d'autres personnes.


C'est pour résoudre ce problème que nous avons créé la fonction styliste intégrée. Si vous voulez que d'autres personnes (pas vous, mais d'autres personnes) soient disposées à examiner votre code, vous feriez mieux de le rendre aussi simple et sans ambiguïté que possible. Et le mot clé ici est "les gens", pas "vous".


Renat, pour qui le stylo a-t-il été écrit ?


Je suis presque sûr qu'il a été écrit pour d'autres utilisateurs. Mais il est très désagréable pour eux de lire du code formaté dans le style de quelqu'un d'autre.


C'est pour résoudre ce problème que nous proposons d'étendre les fonctions du styler régulier. Si vous voulez que d'autres personnes (pas vous, mais d'autres personnes) aient envie d'utiliser votre stylo, vous avez intérêt à le rendre aussi pratique et personnalisable que possible. Et le mot clé ici est "les gens", pas "vous".



Les programmeurs n'écrivent pas du code pour eux-mêmes, même s'ils pensent à tort que c'est pour eux. Vous le savez, n'est-ce pas ?



ps : cette excuse de CodeBase est absurde, qu'est-ce que le stylet intégré dans l'éditeur a à voir avec cela ?

 
komposter :

ps : l'excuse concernant CodeBase est absurde, qu'est-ce que le stylet intégré a à voir avec cela... ?

Lorsque vous construirez, maintiendrez et paierez vous-même pour Code Base, la question disparaîtra immédiatement. Ou pensez-vous que tout ce qui est autour est fait gratuitement ?


Pour l'instant, tout ce dont nous parlons est la position de principe de "c'est mauvais juste parce que ce n'est pas personnalisable".


Passons à des points spécifiques - indiquez quel point et pourquoi il n'est pas fait correctement par le styliste.

 
Renat :

Maintenant, tout le monde ne parle que de la position de principe "c'est seulement mauvais parce que ce n'est pas réglable".

Je ne suis pas d'accord.

J'ai, par exemple, la position suivante : "ce que nous avons n'est pas bon car il ne répond pas aux normes de codage généralement acceptées. Les moyens de satisfaire le résultat n'ont pas d'importance".


Vous avez une position de principe, et pas seulement sur cette question.

Et vous refusez catégoriquement d'écouter les arguments des autres, même si ces arguments sont tout à fait raisonnables et rationnels.

Passons à des points spécifiques - indiquez quel point et pourquoi il est mal fait par le styliste.

Lestylo fait tout correctement. Mais le résultat n'est pas celui souhaité (acceptable).
 
TheXpert :

Je ne suis pas d'accord.

Par exemple, ma position est la suivante : " ce qui n'est pas satisfait parce qu'il ne répond pas aux normes généralement acceptées en matière de codage. tant que je ne suis pas satisfait, je n'utiliserai pas, lorsque je suis satisfait, j'utiliserai. Les moyens de satisfaire le résultat n'ont pas d'importance".


Vous avez une position de principe, et pas seulement sur cette question.

Et vous refusez catégoriquement d'écouter les arguments des autres, même s'ils sont tout à fait raisonnables et rationnels.

Le stylo fait tout correctement. Mais le résultat n'est pas ce que vous voulez (acceptable).

+1. Sur tous les points.

Il suffit d'une décision pour revenir à des styles standard. Ils ne veulent tout simplement pas admettre les erreurs commises en adoptant un style tordu une fois dans le passé.

 
marketeer :

+1. Sur tous les points.

Il suffit d'une décision pour revenir à des styles standard. Ils ne veulent tout simplement pas admettre les erreurs commises en adoptant un style tordu à un moment donné dans le passé.


Je ne suis pas d'accord avec la "courbure".

Il a un goût "plus savoureux" et "plus vif" pour eux... Ne discutez pas de ça.

Et à propos de la personnalisation, ils disent - retour sur le sujet plus tard

;)

 
Sorento :


Je ne suis pas d'accord avec la "courbure".

Il a un goût "plus savoureux" et "plus vif" pour eux... Ne discutez pas de ça.

Et à propos des réglages, ils disent - nous reviendrons sur le sujet plus tard

;)

Comment ça, tu n'es pas d'accord ? Il existe des normes de facto avec lesquelles vous ne pouvez pas être en désaccord, vous devez simplement les suivre. Il ne leur est pas venu à l'esprit de générer des rapports dans leur propre HTML avec une subversion - ils l'ont fait exactement dans la version standard. C'est la même chose pour le style. La programmation est une industrie mondiale, les styles sont définis, et MetaQuotes ne peut pas aller à l'encontre des masses avec une telle "innovation".

 

Veuillez préciser quel élément et pourquoi il n'est pas effectué correctement par le styliste.


De préférence avec une démonstration de morceaux de code formatés.

 
Renat :

Veuillez préciser quel élément et pourquoi il n'est pas effectué correctement par le styliste.

De préférence avec démonstration de morceaux de code formatés.

https://www.mql5.com/ru/forum/122145, seuls les onglets sont petits - 2 caractères, mais ce n'est pas si important, même si c'est normal 3-4.

La démonstration se trouve dans le premier message. Il n'y a pas de virgule ici, il devrait y avoir comme dans cette phrase.


Si vous êtes sérieux, je peux vous citer des extraits de notre accord de style d'entreprise.

Вот это стиль! :) - MQL4 форум
  • www.mql5.com
Вот это стиль! :) - MQL4 форум
 
Renat :

Veuillez préciser quel élément et pourquoi il est mal fait par le styliste.

Une démonstration de fragments de code formatés serait souhaitable.


Renat, c'est déjà antisportif ;)

MQL est VOTRE langage, il n'y a pas de norme pour lui, vous avez donc le droit de définir VOS normes. Et nous ne vous prouverons rien.

Mais MQL est un langage de type C. Et C a plusieurs normes généralement acceptées. Les voici : https://en.wikipedia.org/wiki/Indent_style.

Je préfère personnellement le style Allman (bsd dans Emacs).

Ce style place l'accolade associée à une instruction de contrôle sur la ligne suivante, indentée au même niveau que l'instruction de contrôle. Les instructions contenues dans les accolades sont indentées au niveau suivant.

while (x == y)
{
quelque chose();
{ somethingelse();
}
finalthing();


Il me semble que le problème de la défense de son propre point de vue est absolument farfelu. Si vous voulez voir votre texte formaté de cette façon, je vous en prie ! Mais il y a d'autres personnes qui veulent le voir formaté différemment. Ces personnes (qui n'ont pas accès à l'organisme) vous demandent de tenir compte de leurs besoins et d'apporter des modifications au formatage afin qu'il puisse être présenté à la fois comme vous et comme eux. Vous seuls, les développeurs, pouvez le faire. C'est vers vous que nous nous tournons avec cette demande. Soit vous nous rejoignez à mi-chemin, soit vous nous renvoyez tous à vos normes. Choisissez votre option et annoncez-la.

Indent style - Wikipedia, the free encyclopedia
  • en.wikipedia.org
Indentation is not a requirement of most programming languages, where it is used as secondary notation. Rather, programmers indent to better convey the structure of their programs to human readers. In particular, indentation is used to show the relationship between control flow constructs such as conditions or loops and code contained within...
 

Juste quelques paragraphes pour ajouter pourquoi je pense que cette question est importante et pourquoi je pense que le style Allman (bsd dans Emacs) est le bon. Oublions pour un moment qui est habitué à quoi et faisons appel à la logique nue.

Pourquoi devez-vous formater le texte ? Afin d'isoler et de diviser les blocs logiques individuels par ce même formatage.


Prenons l'exemple d'un moment ordinaire. Elle comporte deux blocs logiquement isolés : l'"en-tête" de la boucle et le corps de la boucle. Pour ne pas les mélanger, il faut les placer sur des lignes séparées. C'est pourquoi ouvrir des parenthèses dans la même ligne que while (pour moi personnellement) provoque une confusion (c'est comme un homme qui entre à moitié dans une pièce - le corps entier est dans la pièce et la tête est encore "laissée" derrière la porte).


Maintenant, la deuxième question est de pousser les supports ou non ? En principe, les parenthèses ne font pas directement référence à l'en-tête et font plutôt partie du corps de la boucle. Cependant, seules les commandes exécutables doivent être poussées à l'intérieur, c'est-à-dire quelque chose qui a sa propre logique séparée. Mais il existe au moins un exemple judicieux de boucle sans corps :

while ( TradingServerNotAvailable() )
{
}

Nous n'avons tout simplement rien à faire tant que le serveur commercial n'est pas disponible - nous ne faisons donc rien et le cycle du corps est vide. Dans ce cas, les parenthèses poussées à l'intérieur ont l'air (de mon point de vue) - un peu étrange : décalées à droite et vides mises en évidence.

Lorsqu'une boucle a un corps, celui-ci est déplacé vers la droite et l'espace à gauche est libéré pour trouver des paires de parenthèses fermantes :

while ( TradingServerNotAvailable() )
{
Sleep ( 1000 );
}

C'est une autre raison pour laquelle les parenthèses ouvrantes ne devraient pas être placées sur la même ligne que l'en-tête de la boucle - elles sont plus difficiles à trouver à cet endroit lorsque vous cherchez des parenthèses fermantes. Dans ma version, vous pouvez clairement voir une parenthèse dans cette position et son homologue dans une autre ligne mais dans la même position. En outre, la ligne avec une seule parenthèse (même sans commentaire !) sert d'élément visuel supplémentaire, mettant en évidence et séparant le bloc interne du bloc externe.


Comme vous pouvez le constater : rien de personnel - juste la logique de la perception visuelle du texte !


Et c'est du point de vue de cette logique (plutôt que des préférences et habitudes personnelles) que le texte dans le formatage actuel du stylo est incompréhensible pour moi :

// чего вдавлен внутрь кусок кода - в котором кода нет и выделять там нечего
while ( TradingServerNotAvailable() )
{
}
// каждый отступ вправо ассоциируется с новым уровнем вложенности, а здесь визуально ТРИ уровня!
while ( TradingServerNotAvailable() ) // первый уровень
  { // второй уровень
   Sleep(1000); // третий уровень
  }

Et si, dans l'écriture inspirée de GNU, c'est juste de la bouillie.

if ( TradingServerNotAvailable() ) {
  ....
} else { // вот тут в одной строке ТРИ элемента разных блоков: закрытие предыдущего, разделитель, начало следующего :(((
  ....
}

et comment savoir si vous n'avez pas perdu des parenthèses ouvrantes ou mis une parenthèse fermante supplémentaire ? C'est comme ça :

if ( TradingServerNotAvailable() ) 
{
  ....
}
else
{
  ....
}
Encore une fois : il ne s'agit pas de mes habitudes personnelles ou de quoi que ce soit d'autre - juste de la logique de la perception visuelle du texte !
Indent style - Wikipedia, the free encyclopedia
  • en.wikipedia.org
Indentation is not a requirement of most programming languages, where it is used as secondary notation. Rather, programmers indent to better convey the structure of their programs to human readers. In particular, indentation is used to show the relationship between control flow constructs such as conditions or loops and code contained within...
Raison: