¡Ese es el estilo! :)

 

Prehistoria: A lo largo de muchos años de codificación he desarrollado un estilo "personal" de formateo de texto(aquí). Mis textos ya son authomatic desde hace mucho tiempo y sólo tengo que utilizar Astyle cuando empiezo a trabajar con algún texto "extraño".

Puedo explicar por qué formateo mis textos de esta manera: el número de tabulaciones (desplazadas a la derecha de la profundización del texto) corresponde al nivel de anidamiento. Cada apertura { comienza un nuevo nivel, por lo que está en una línea separada con la misma sangría que el texto anterior, y todo el texto después de él está sangrado a la derecha. Cada cierre } hace retroceder el texto una pestaña. Esto facilita la búsqueda de paréntesis emparejados (deben estar en la misma posición vertical y el número de veces que se pulsa la tecla Tab corresponde al nivel de anidamiento del texto. Los + - > < internos están puntuados con espacios, para que el texto no se mezcle en una masa sólida. Para mí, esto tiene sentido y es lógico.


Ahora la historia: Ayer recibí el código fuente de ml5 con un formato extraño (desde mi punto de vista): las llaves están desplazadas a la derecha, dentro del texto por 2 posiciones, y el texto dentro de ellas también está a la derecha, pero sólo por una posición. Traté de usar el tabulador para llegar a la misma posición donde hay una apertura { para poner un cierre } - no funcionó. Resultó que Metaeditor5 hace esto con su comando Styler.

¿Puede alguien (tal vez los desarrolladores) explicar la lógica del formato de Metaeditor5?

Aquí hay un trozo de código de MACD Sample.mq5 a su manera y a la mía:

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

Resulta que así es como Metaeditor5 formatea su comando Styler.

¿Puede alguien (quizá los propios desarrolladores) explicarme la lógica del formato de Metaeditor5?

Me uno a la pregunta, yo también me lo he preguntado siempre.

 

No busques la lógica donde no la hay. Será mejor que hagas un informe de errores.

=)

 

Siempre ha planteado preguntas también. :(

Sin embargo, me ciño a un estilo similar al de Java.

 
sol >> :

No busques la lógica donde no la hay. Será mejor que hagas un informe de errores.

=)

Lee la Ayuda, porque todo está ahí:


 
sol >> :

Mejor hacer un informe de errores.

Al fin y al cabo, no se trata de un error (puro y duro). Es que "lo ven así" :)

Quiero entender primero la lógica, si es que la hay.

 
Rosh >> :

Lee la Ayuda, porque lo dice todo:

la Ayuda dice CÓMO hacerlo, pero no dice POR QUÉ se considera correcto, conveniente, eficiente, ....

para una operación de este tipo en realidad sólo debe hacer opciones de styler (por ejemplo, mira el documento sobre Astyle)

paréntesis de apertura:

- desplazamiento a la derecha: número de espacios

- salto de línea: antes o después

etc.

 
ForexTools >> :

Quiero entender primero la lógica, si es que la hay.

La lógica es que el código esté alineado con el nivel de anidamiento. No hay desacuerdo aquí, como podemos ver.

Pero los paréntesis de apertura y cierre no son código, sino elementos de diseño, por lo que están ligeramente fuera del código por un carácter.

 

Rosh писал(а) >>

Los corchetes de apertura y cierre, por el contrario, no son código sino elementos de diseño, por lo que sobresalen ligeramente del código un carácter.

Me parece que los corchetes de bloque son una parte importante del código y destacan un bloque lógico o funcional. Así que, ¿por qué no van a estar colocados de forma que realmente cumplan esa función? No vamos a hablar todavía de los espacios alrededor de los operadores, etc.

 
Rosh >> :

La lógica es que el código esté alineado con el nivel de anidamiento. No hay desacuerdo aquí, como podemos ver.

Hay una diferencia de opinión sobre lo que tú piensas y lo que otros usuarios encuentran conveniente para ellos ;)

Creo que el problema se elimina FÁCILMENTE con ajustes adicionales del estilista. Estoy seguro de que NO es lo más difícil de hacer.

 

Gracias TheXpert, de alguna manera no me había dado cuenta de este "pasaje"

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

bueno, no tires de la excusa de que se hizo de alguna manera y ahora tienes que al menos explicarlo ;)

Los elementos de diseño son comentarios, ¡puedes eliminarlos sin pérdida de funcionalidad!! Intenta eliminar un solo "elemento" de este tipo (me refiero a } ) - ¿a dónde te enviará el compilador? :))))