2010-12-10 18 views
7

Para envolver líneas largas manualmente, ¿cuál es su heurística personal para elegir lugares para romper una línea?¿Dónde te gusta dividir las líneas largas?

Suponiendo que esta línea es demasiado larga, ¿dónde podría romperla y qué orden de precedencia?

double var = GetContext()->CalculateValue(element, 10.0); 


mayoría de las personas están de acuerdo sobre la separación de los parámetros por línea:

double var = GetContext()->CalculateValue(element, 
              10.0); 


¿Alguien descanso en un paréntesis de apertura?

double var = GetContext()->CalculateValue(
           element, 10.0); 


Pero ¿cómo combate con un operador de desreferencia (o .):

double var = GetContext() 
       ->CalculateValue(element, 10.0); 

o usted:

double var = GetContext()-> 
       CalculateValue(element, 10.0); 


Cualquier diferente para el operador de asignación?

double var = 
    GetContext()->CalculateValue(element, 10.0); 

o

double var 
    = GetContext()->CalculateValue(element, 10.0); 

Algún otro?


Si el sistema es de procedimiento, usted podría contestar así:

  1. nombres de los parámetros en coma
  2. Antes de que un operador -> o .
  3. Después de un operador de asignación

¡O solo publique un código de ejemplo!
Puntos de bonificación si puede justificar académicamente su decisión final.

+0

Mejor en programadores. – dmckee

+0

Cuando parece más legible en varias líneas que en una. –

Respuesta

4

Me gusta hacer las divisiones en la fuerza del orden de encuadernación, lo más cerca posible del final de la línea. Entonces en sus ejemplos me dividiría en el signo =. Si esto todavía se derramó sobre el margen me dividiría en el ->

La idea de dividir una línea es únicamente para el beneficio de los lectores (ya que a la compilación no le importa). Encuentro mentalmente que es más fácil dividir mentalmente pedazos de código que se dividen en grupos lógicos.

2

Me divido en el lugar y sangré al nivel necesario para que el código sea más legible. Es todo estética, por lo que cualquier "justificación académica" no va a ser más útil que cualquier otra excusa ideada y post-razonada para hacer lo que sea que hayas decidido comenzar con algo arbitrariamente.

0

Soy un fan de romper en la apertura de paréntesis, a continuación, en cada uno de los parámetros

4

En el ejemplo particular yo personalmente iría con el cuarto:

double var = GetContext()-> 
      CalculateValue(element, 10.0); 

nunca he estado un entusiasta de estándares de formato de código estrictamente definidos, aparte de la regla básica de formatear siempre el código para que tenga sentido (especialmente para alguien que no lo escribió) y es fácil de leer. Cualquier regla demasiado amplia como "poner siempre un salto de línea en este o aquel punto en una línea" o incluso "siempre nombrar variables con este o aquel esquema de nombres" simplemente no me sienta bien. Me parece que hace más daño que bien en el largo plazo.

No tiene en cuenta los casos extremos muy bien, pone el foco en lo incorrecto (los puntos de sintaxis en lugar del significado real legible y el flujo del código) y fomenta el objetivo de convertir al desarrollador en un producto básico. haga que la posición sea plug-and-play como sea posible sin tener en cuenta el mejor juicio del desarrollador.

(Ok, eso puede haber convertido en un poco de una queja. Mis disculpas. Pero sigue siendo el punto.)

Básicamente, sin reglas concretas, el código debe ser hecho para adecuarlos a lo que está tratando de decir de una manera legible caso por caso. Los desarrolladores deben usar su mejor juicio en consecuencia.

0

Para esta línea:

double var = GetContext()->CalculateValue(element, 10.0, foo);

Me gustaría romper el linke después de que el primer parámetro, entonces alinear elementos posteriores de partida donde se inició el primer parámetro, pero en la línea siguiente:

double var = GetContext()->CalculateValue(element, 
              10.0, foo); 

Si la 2da línea es demasiado larga, haga una tercera y así sucesivamente.

Cuestiones relacionadas