Esse é o estilo! :)

 

Pré-história: Durante muitos anos de codificação, desenvolvi um estilo "pessoal" de formatação de texto(aqui). Meus textos já são automáticos há muito tempo e só tenho que usar Astyle quando começo a trabalhar com algum texto "alienígena".

Posso explicar porque formato meus textos desta maneira: o número de abas (deslocado para o aprofundamento direito do texto) corresponde ao nível de aninhamento. Cada abertura { começa um novo nível, portanto está em uma linha separada com o mesmo recuo que o texto anterior, e todo o texto depois é recuado para a direita. Cada fechamento } leva o texto de volta uma aba. Isto facilita encontrar parênteses (devem estar na mesma posição vertical e o número de vezes que a tecla Tab é pressionada corresponde ao nível de aninhamento do texto. Os + - > < < internos são pontuados com espaços, para que o texto não se misture em uma papa sólida. Para mim, isto faz sentido e faz sentido.


Agora a história: Ontem recebi o código fonte do ml5 com alguma formatação estranha (do meu ponto de vista): os suportes são deslocados para a direita, dentro do texto por 2 posições, e o texto dentro deles também é para a direita, mas apenas por uma posição. Tentei usar o tabulador para chegar à mesma posição onde há uma abertura { para colocar um fechamento } - não funcionou, então o texto formatado Metaeditor5 com seu comando Styler.

Alguém (talvez os desenvolvedores) pode explicar a lógica da formatação do Metaeditor5?

Aqui está um código do MACD Sample.mq5 no seu caminho e no meu caminho:

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

como se vê, é assim que o Metaeditor5 formata seu comando Styler.

Alguém (talvez os próprios desenvolvedores) pode me explicar a lógica da formatação do Metaeditor5?

Eu me junto à pergunta, eu sempre me perguntei também.

 

Não procure por lógica onde não há nenhuma. É melhor você fazer um relatório de erros.

=)

 

Sempre levantou questões também. :(

Eu, no entanto, mantenho um estilo semelhante ao Java.

 
sol >> :

Não procure por lógica onde não há nenhuma. É melhor você fazer um relatório de erros.

=)

Leia Ajuda, porque está tudo lá:


 
sol >> :

É melhor fazer um relatório de erros.

Afinal, não é um bug (puro e simples). É que "eles vêem as coisas dessa maneira" :)

Quero entender primeiro a lógica, se é que existe uma.

 
Rosh >> :

Leia a Ajuda, porque ela diz tudo:

a Ajuda diz COMO fazê-lo, mas não diz POR QUE é considerado correto, conveniente, eficiente, ....

para tal operação seria necessário fazer opções de modelagem (por exemplo, veja a documentação sobre Astyle)

parênteses de abertura:

- deslocamento para a direita: número de espaços

- quebra de linha: antes ou depois

etc.

 
ForexTools >> :

Quero entender primeiro a lógica, se é que existe uma.

A lógica é que o código é alinhado ao nível de aninhamento. Não há discordância aqui, como podemos ver.

Mas abrir e fechar parênteses não são códigos, mas elementos de projeto, por isso estão ligeiramente fora do código por um caractere.

 

Rosh писал(а) >>

Os parênteses de abertura e fechamento, por outro lado, não são elementos de código, mas de projeto, de modo que se projetam um pouco além do código por um caractere.

Parece-me que os parênteses de bloco são uma parte importante do código e destacam um bloco lógico ou funcional. Então por que eles não deveriam ser posicionados para que realmente desempenhem essa função? Ainda não vamos falar sobre espaços ao redor dos operadores, etc.

 
Rosh >> :

A lógica é que o código é alinhado ao nível de aninhamento. Não há discordância aqui, como podemos ver.

Há uma diferença de opinião sobre o que você pensa e o que os outros usuários acham conveniente para si mesmos ;)

Acho que o problema é facilmente removido por ajustes adicionais do modelador. Tenho certeza de que não é a coisa mais difícil de se fazer.

 

Obrigado TheXpert, de alguma forma eu nem percebi esta "passagem".

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

bem, não arranje a desculpa de que foi feito de alguma forma e agora você tem que pelo menos explicar ;)

Os elementos do projeto são comentários, você pode removê-los sem qualquer perda de funcionalidade!! Tente remover apenas um desses "elementos" (quero dizer } ) - para onde o compilador o enviará? :))))