Das ist der Stil! :)

 

Vorgeschichte: Im Laufe vieler Jahre der Programmierung habe ich einen "persönlichen" Stil der Textformatierung entwickelt(hier). Meine Texte sind schon seit langem authomatic und ich muss Astyle nur benutzen, wenn ich mit einem "fremden" Text arbeite.

Ich kann erklären, warum ich meine Texte auf diese Weise formatiere: Die Anzahl der Tabulatoren (nach rechts verschobene Vertiefung des Textes) entspricht der Verschachtelungsebene. Jedes einleitende { beginnt eine neue Ebene, steht also in einer eigenen Zeile mit dem gleichen Einzug wie der vorherige Text, und der gesamte nachfolgende Text wird nach rechts eingerückt. Mit jedem schließenden } wird der Text um einen Tabulator zurückgesetzt. Dies erleichtert das Auffinden gepaarter Klammern (sie sollten sich vertikal an der gleichen Stelle befinden, und die Anzahl der Betätigungen der Tabulatortaste entspricht der Verschachtelungsebene des Textes). Die internen + - > < sind mit Leerzeichen unterbrochen, damit der Text nicht zu einem Einheitsbrei verschmilzt. Für mich macht das Sinn und ist sinnvoll.


Nun zur Geschichte: Gestern erhielt ich den Quellcode von ml5 mit einer (aus meiner Sicht) seltsamen Formatierung: geschweifte Klammern sind nach rechts verschoben, innerhalb des Textes um 2 Positionen, und der Text innerhalb der Klammern ist ebenfalls nach rechts verschoben, aber nur um eine Position. Ich habe versucht, mit dem Tabulator an dieselbe Stelle zu gelangen, an der sich ein öffnendes { befindet, um ein schließendes } einzufügen - hat nicht funktioniert. Es stellte sich heraus, dass Metaeditor5 dies mit seinem Befehl Styler tut.

Kann jemand (vielleicht die Entwickler) die Logik der Metaeditor5-Formatierung erklären?

Hier ist ein Stück Code aus MACD Sample.mq5 in ihrer Art und Weise und in meinem Weg:

Styler5                                  -|- Мой стиль
-------                                  -|- ---------
bool CSampleExpert:: LongModified()       -|- bool CSampleExpert:: LongModified()
  {                                      -|- {  
   bool res=false;                       -|-   bool res = false;
//--- check for trailing stop            -|-   //--- check for trailing stop
   if( InpTrailingStop>0)                 -|-   if ( InpTrailingStop > 0)
     {                                   -|-   { 
      if( m_symbol.Bid()- m_position. Price -|-     if ( m_symbol.Bid() - m_position. Pric
        {                                -|-     {
         if( m_position. StopLoss()< m_symb -|-       if ( m_position. StopLoss() < m_symb
           {                             -|-       {
            double sl= m_symbol.Bid()- m_a -|-         double sl = m_symbol.Bid() - m_a
            double tp= m_position. TakePro -|-         double tp = m_position. TakeProfi
            //--- modify position        -|-         //--- modify position
            if( m_trade. PositionModify( Sy -|-         if ( m_trade. PositionModify( Symbo
               printf("Long position by  -|-           printf(" Long position by % s to
            else                         -|-         else
              {                          -|-         {
               printf("Error modifying p -|-           printf(" Error modifying positi
               printf("Modify parameters -|-           printf(" Modify parameters : SL
              }                          -|-         }
            //--- modified and must exit -|-         //--- modified and must exit fro
            res=true;                    -|-         res = true;
           }                             -|-       }
        }                                -|-     }
     }                                   -|-   } 
//---                                    -|-   //---
   return( res);                          -|-   return( res);
  }                                      -|- }
 

ForexTools писал(а) >>

wie sich herausstellte, formatiert Metaeditor5 seinen Styler-Befehl so.

Kann mir jemand (vielleicht die Entwickler selbst) die Logik der Metaeditor5-Formatierung erklären?

Ich schließe mich der Frage an, das habe ich mich auch schon immer gefragt.

 

Suchen Sie nicht nach Logik, wo es keine gibt. Sie sollten besser einen Fehlerbericht erstellen.

=)

 

Hat auch immer Fragen aufgeworfen. :(

Ich halte mich jedoch an einen Java-ähnlichen Stil.

 
sol >> :

Suchen Sie nicht nach Logik, wo es keine gibt. Sie sollten besser einen Fehlerbericht erstellen.

=)

Lesen Sie Hilfe, denn dort steht alles drin:


 
sol >> :

Schreiben Sie besser einen Fehlerbericht.

Es handelt sich nicht um einen Fehler (ganz einfach). Es ist einfach so, dass sie es so sehen" :)

Ich möchte zuerst die Logik verstehen, wenn es eine gibt.

 
Rosh >> :

Lesen Sie die Hilfe, denn dort steht alles drin:

die Hilfe sagt, WIE man es macht, aber sie sagt nicht, WARUM man es für richtig, zweckmäßig, effizient hält, ....

für eine solche Operation wäre es notwendig, Styler-Optionen einzurichten (siehe z.B. die Dokumentation zu Astyle)

öffnende Klammern:

- Verschiebung nach rechts: Anzahl der Leerzeichen

- Zeilenumbruch: vor oder nach

usw.

 
ForexTools >> :

Ich möchte zuerst die Logik verstehen, wenn es eine gibt.

Die Logik besteht darin, dass der Code an die Verschachtelungsebene angepasst wird. Wie wir sehen können, gibt es hier keine Meinungsverschiedenheiten.

Die öffnenden und schließenden Klammern sind jedoch kein Code, sondern Gestaltungselemente, so dass sie um ein Zeichen außerhalb des Codes liegen.

 

Rosh писал(а) >>

Die öffnenden und schließenden Klammern hingegen sind keine Code-, sondern Designelemente und ragen daher um ein Zeichen über den Code hinaus.

Ich habe den Eindruck, dass Blockklammern ein wichtiger Teil des Codes sind und einen logischen oder funktionalen Block hervorheben. Warum sollten sie also nicht so positioniert werden, dass sie diese Funktion tatsächlich erfüllen? Wir werden jetzt noch nicht über die Räume rund um die Betreiber usw. sprechen.

 
Rosh >> :

Die Logik besteht darin, dass der Code an die Verschachtelungsebene angepasst wird. Wie wir sehen können, gibt es hier keine Meinungsverschiedenheiten.

Es gibt einen Meinungsunterschied zwischen dem, was Sie denken, und dem, was andere Benutzer für sich selbst bequem finden ;)

Ich denke, das Problem lässt sich durch zusätzliche Styler-Einstellungen EINFACH beheben. Ich bin mir sicher, dass es NICHT das Schwierigste ist, was man tun kann.

 

Danke TheXpert, irgendwie habe ich diese "Passage" gar nicht bemerkt

А вот открывающие и закрывающие скобки не являются кодом, а являются элементами оформления

Nun, komm mir nicht mit der Ausrede, dass es irgendwie gemacht wurde und du es jetzt wenigstens erklären musst ;)

Die Designelemente sind Kommentare, Sie können sie ohne Funktionsverlust entfernen!!! Versuchen Sie, nur ein solches "Element" (ich meine } ) zu entfernen - wohin wird der Compiler Sie schicken? :))))