Cuando esté en Python o Javascript, siempre debe colocar operadores binarios al final de la línea anterior, para evitar que las nuevas líneas terminen su código prematuramente; Te ayuda a detectar errores.
Pero en C o C ++, esto no es un problema, así que me pregunto:
¿Hay alguna razón para que prefiera la segunda versión a la primera?
return lots_of_text
+ 1;
versus
return lots_of_text +
1;
(Por ejemplo, ¿uno de ellos ayuda a prevenir otros tipos de errores? ¿O uno de ellos se considera más legible?)
c++
coding-style
usuario541686
fuente
fuente
Respuestas:
Como puede ver en las respuestas, no hay consenso sobre este asunto. A menos que trabaje en un equipo, use lo que le resulte más cómodo.
Yo prefiero insertar un salto de línea antes de los operadores.
Cada vez que tengo que romper líneas, generalmente pongo como máximo un término del mismo "nivel" en una línea:
Ley de gravitación de Newton en Python:
Compare esto con:
Quiero saber, que "divido por distancia al cuadrado", no quiero saber, que "mass_2 se divide", porque no es así como pienso en las expresiones matemáticas.
Además, generalmente quiero saber primero, qué estoy haciendo (operador), antes de preocuparme por lo que hago (operandos).
O considere esta declaración SQL enrevesada:
Esto me permite ver cómo las condiciones individuales se conectan muy fácilmente, simplemente deslizando de arriba a abajo sin tener que leer cada línea hasta el final para encontrar el operador en lugar de:
Pienso en lo primero en términos de "
X
es cierto", luego lo modifico diciendo: " Y esto también es cierto", lo cual me parece más natural que al revés. Además, el primero es mucho más fácil de analizar visualmente.O un ejemplo de PHP:
Una vez más, puedo leer la lectura verticalmente para ver que simplemente estoy concatenando texto, porque la mayoría de las veces siento que en realidad no me importa lo que está dentro de las cadenas / condiciones.
Por supuesto, no aplicaría este estilo incondicionalmente. Si poner la nueva línea después de un operador parece tener más sentido para mí, lo haría, pero no puedo pensar en un ejemplo en este momento.
fuente
.
, no.=
?force
Casi siempre rompo líneas antes de los operadores binarios para dejar claro a los lectores del código que esta es la continuación de una expresión y no la siguiente declaración. Esto es importante si la siguiente declaración normalmente se sangraría. Por ejemplo, considere una declaración if que tenga una expresión condicional compleja:
La segunda parte de la expresión condicional se confunde fácilmente con la primera declaración de la parte de entonces. Esto puede ser bastante confuso si la primera parte de la condición es larga y el && termina muy a la derecha. Compare esto con la alternativa:
Esto parece un poco extraño, pero deja bastante claro que la segunda parte de la condición no es el comienzo de una declaración.
Hago esto también en otros contextos, pero la declaración if es la más importante, ya que la sangría es ambigua. Por supuesto, uno podría cambiar la sangría o la colocación de la llave, pero esto también parece extraño.
tl; dr el extremo izquierdo de la línea es más significativo para la comprensión de lectura rápida, por lo que colocar el operador en el extremo izquierdo es un marcador más destacado de que esta es una expresión continua, no una declaración.
fuente
+
y-
que también podría entenderse como operadores de prefijo unario). La solución habitual para que las líneas continuas se destaquen es sangrarlas más (es decir, en dos niveles).Siempre usaría el primero. Desea que quede claro lo que está haciendo con ese 1 allí. Si lo viera y hubiera un muro de texto encima de ese 1, no tendría idea de lo que estaba sucediendo en cuanto al uso de ese 1.
El '+' al lado de 1 deja en claro que, como mínimo, estoy haciendo algo con el 1 en cuestión en lugar de pasar el rato diciendo "Estoy en tu código amigo ..." sin razón aparente.
fuente
Siento que ayuda enormemente la comprensión lectora cuando una línea indica que la declaración continúa en la siguiente línea al tener el operador binario al final y, por lo tanto, la declaración es incompleta. El punto y coma que falta no es suficiente para que lo entienda de inmediato.
Esto puede ser simplemente una cuestión de hábito, pero a menos que trabaje exclusivamente en idiomas que requieren el punto y coma (lo cual me parece poco realista dada la omnipresencia de los scripts de shell, los archivos MAKE y los lenguajes como Python), probablemente tampoco tendrá ese hábito.
EDITAR: Giorgio hace un excelente punto en los comentarios: este uso hace eco de la puntuación común , tanto en matemáticas como en lenguajes naturales. Tu escribirias
Se podría no escribir
fuente