Questo è lo stile! :)

 

Preistoria: in molti anni di codifica ho sviluppato uno stile "personale" di formattazione del testo(qui). I miei testi sono autentici già da molto tempo e devo usare Astyle solo quando inizio a lavorare con un testo "alieno".

Posso spiegare perché formatto i miei testi in questo modo: il numero di schede (spostate verso l'approfondimento a destra del testo) corrisponde al livello di annidamento. Ogni { di apertura inizia un nuovo livello, quindi è su una linea separata con la stessa indentazione del testo precedente, e tutto il testo dopo è indentato a destra. Ogni chiusura } porta il testo indietro di una scheda. Questo rende facile trovare le parentesi accoppiate (dovrebbero essere nella stessa posizione verticalmente e il numero di volte che il tasto Tab viene premuto corrisponde al livello di annidamento del testo. Gli interni + - > < < sono punteggiati da spazi, in modo che il testo non si confonda in una poltiglia solida. Per me, questo ha senso e ha un senso.


Ora la storia: ieri ho ricevuto il codice sorgente di ml5 con una strana (dal mio punto di vista) formattazione: le parentesi sono spostate a destra, all'interno del testo di 2 posizioni, e il testo al loro interno è anche a destra, ma solo di una posizione. Ho provato a usare il tabulatore per arrivare alla stessa posizione in cui c'è un { di apertura per mettere un } di chiusura - non ha funzionato.

Qualcuno (forse gli sviluppatori) può spiegare la logica della formattazione di Metaeditor5?

Ecco un pezzo di codice da MACD Sample.mq5 a modo loro e a modo mio:

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 писал(а) >>

a quanto pare, questo è il modo in cui Metaeditor5 formatta il suo comando Styler.

Qualcuno (forse gli sviluppatori stessi) può spiegarmi la logica della formattazione di Metaeditor5?

Mi unisco alla domanda, me lo sono sempre chiesto anch'io.

 

Non cercare la logica dove non c'è. È meglio che tu faccia una segnalazione di bug.

=)

 

Ha sempre sollevato anche delle domande. :(

Tuttavia, mi attengo a uno stile simile a quello di Java.

 
sol >> :

Non cercare la logica dove non c'è. È meglio che tu faccia una segnalazione di bug.

=)

Leggete Aiuto, perché è tutto lì:


 
sol >> :

Meglio fare una segnalazione di bug.

Non è un bug dopo tutto (puro e semplice). È solo "la vedono così" :)

Voglio prima capire la logica, se ce n'è una.

 
Rosh >> :

Leggete la Guida, perché dice tutto:

l'Aiuto dice COME farlo, ma non dice PERCHE' è considerato corretto, conveniente, efficiente, ....

per tale operazione sarebbe necessario fare opzioni di styler (per esempio, guardare la documentazione su Astyle)

staffe di apertura:

- spostamento a destra: numero di spazi

- interruzione di linea: prima o dopo

ecc.

 
ForexTools >> :

Voglio prima capire la logica, se ce n'è una.

La logica è che il codice è allineato al livello di annidamento. Qui non c'è disaccordo, come possiamo vedere.

Ma le parentesi di apertura e di chiusura non sono codice, ma elementi di design, quindi sono leggermente fuori dal codice di un carattere.

 

Rosh писал(а) >>

Le parentesi di apertura e di chiusura, d'altra parte, non sono codice ma elementi di design, quindi sporgono leggermente oltre il codice di un carattere.

Mi sembra che le parentesi di blocco siano una parte importante del codice ed evidenziano un blocco logico o funzionale. Allora perché non dovrebbero essere posizionati in modo che svolgano effettivamente questa funzione? Non parleremo ancora degli spazi intorno agli operatori ecc.

 
Rosh >> :

La logica è che il codice è allineato al livello di annidamento. Qui non c'è disaccordo, come possiamo vedere.

C'è una differenza di opinione su ciò che tu pensi e ciò che gli altri utenti trovano conveniente per loro stessi ;)

Penso che il problema sia FACILMENTE rimosso da impostazioni aggiuntive dello styler. Sono sicuro che NON è la cosa più difficile da fare.

 

Grazie TheXpert, in qualche modo non avevo nemmeno notato questo "passaggio"

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

Beh, non tirare fuori la scusa che è stato fatto in qualche modo e ora devi almeno spiegarlo ;)

Gli elementi di design sono comentari, potete rimuoverli senza alcuna perdita di funzionalità!!! Provate a rimuovere solo uno di questi "elementi" (intendo } ) - dove vi manderà il compilatore? :))))