Recomendaciones para la unión de línea implícita versus explícita

9

Me gustaría saber recomendaciones sobre la unión de línea implícita frente a la unión de línea explícita en Python.

En particular, ¿estás a favor de una forma sobre la otra? ¿Qué recomienda como valor predeterminado general? ¿Qué criterios tiene para elegir uno sobre el otro, y si tiene preferencia por uno, cuándo hace excepciones para el otro?

Tengo una respuesta en mente para esta pregunta que refleja mis propios prejuicios, pero antes de publicar mi propia respuesta me gustaría saber qué piensan los demás ... y si puede tener un mejor conjunto de criterios que los que tengo en mente, entonces ciertamente aceptaré tu respuesta sobre la mía.

Algunas de las recomendaciones pueden generalizarse a esta elección en otros lenguajes de programación, pero mi propio sesgo es algo más fuerte en Python debido a algunas características específicas del lenguaje, por lo que me gustaría conocer tanto el razonamiento general como el centrado en Python. tener sobre este tema.

Para algunos antecedentes, la discusión ocurrió alrededor de una pregunta particular sobre stackoverflow , pero pensé que era más apropiado mover la discusión aquí como una pregunta para evitar saturar la respuesta sobre SO con esta tangente ya que se ha desviado del tema La pregunta original. Puede ver esa pregunta y sus respuestas para los fragmentos de código de ejemplo que iniciaron la discusión.

Aquí hay un ejemplo simplificado:

join_type = "explicit"
a = "%s line joining" \
    % (join_type)
# versus
join_type = "implicit"
b = ("%s line joining"
     % (join_type))
aculich
fuente
Las preguntas sobre mejores prácticas están fuera de tema para la revisión del código. He migrado tu pregunta a un lugar mejor.
Winston Ewert
1
@WinstonEwert antes de publicar, eché un buen vistazo a las Preguntas frecuentes de CodeReview y las Preguntas frecuentes de los programadores , y elegí CodeReview porque explícitamente dice que los tipos de preguntas para hacer allí incluyen "Mejores prácticas y uso de patrones de diseño en su código". Incluí una versión simplificada del código en cuestión, entonces, ¿cómo está fuera de tema?
aculich
@ WinstonEwert He publicado una pregunta en Meta sobre la aclaración de las Preguntas frecuentes de CodeReview si desea comentar sobre esto allí.
aculich

Respuestas:

8

Hay un documento de estilo de codificación llamado PEP8. Se recomienda no usar \<NL>donde se puedan usar paréntesis.

La forma preferida de ajustar líneas largas es mediante el uso de la continuación de línea implícita de Python dentro de paréntesis, corchetes y llaves. Las líneas largas se pueden dividir en varias líneas ajustando las expresiones entre paréntesis. Deben usarse con preferencia al uso de una barra diagonal inversa para la continuación de la línea. Asegúrese de sangrar la línea continua adecuadamente. El lugar preferido para romper alrededor de un operador binario es después del operador, no antes.

Texto completo: http://www.python.org/dev/peps/pep-0008/ (sección Diseño de código)

No es obligatorio, pero define buenas prácticas aceptables que son especialmente útiles si tiene múltiples confirmadores de Python en su equipo.

Mischa Arefiev
fuente
1

Tiendo a usar la unión de línea implícita porque me parece más legible y el soporte de los editores suele ser mejor con respecto a la sangría y el resaltado de toda la expresión gracias a la coincidencia de paréntesis.

jcollado
fuente
0

Actualmente, preferiría

join_type = "kiding"
a = "%s line joining" % (join_type)

SI-))

.

Tiendo a preferir la unión explícita de líneas porque no me gusta el desorden de parens al final de las expresiones.
Pero me gusta la unión de líneas implícitas para reducir el ancho ocupado por la escritura de una cadena.
Luego, en algunos casos, me da vergüenza no mezclar las dos formas

eyquem
fuente
1
Bromas aparte, no me gusta la unión explícita porque requiere más tipeo y es difícil mantener todas las barras invertidas ordenadamente alineadas cuando se edita el código.
Martineau
aparentemente @eyquem nunca se ha dejado LISP ...
cowbert