Ha habido algunos comentarios sobre el espacio en blanco ya en discusión sobre la colocación de llaves.
Yo mismo tiendo a rociar mi código con líneas en blanco en un intento de segregar cosas que van juntas en grupos "lógicos" y espero que sea más fácil para la próxima persona que lea el código que acabo de producir.
De hecho, diría que estructuro mi código como lo escribo: hago párrafos, no más de unas pocas líneas (definitivamente más cortas que 10), y trato de hacer que cada párrafo sea autónomo.
Por ejemplo:
- en una clase, agruparé métodos que van juntos, mientras los separo por una línea en blanco del siguiente grupo.
- si necesito escribir un comentario, generalmente pondré una línea en blanco antes del comentario
- en un método, hago un párrafo por paso del proceso
Con todo, rara vez tengo más de 4/5 líneas agrupadas, lo que significa un código muy escaso.
No considero que todo este espacio en blanco sea un desperdicio porque en realidad lo uso para estructurar el código (ya que de hecho uso la sangría) y, por lo tanto, creo que vale la pena el estado de la pantalla que requiere.
Por ejemplo:
for (int i = 0; i < 10; ++i)
{
if (i % 3 == 0) continue;
array[i] += 2;
}
Considero que las dos declaraciones tienen claros propósitos distintos y, por lo tanto, merecen separarse para que sea obvio.
Entonces, ¿cómo usas (o no) líneas en blanco en el código?
fuente
if (i % 3 != 0) { <newline here> array[i] += 2; <newline here> }
, pero veo tu punto :)for (int i = 0; i < 10; i += 3) { <newline here> array[i] += 2; <newline here> }
pero veo tu punto :)Respuestas:
Siempre
El espacio en blanco es crucial para limpiar el código legible. Una línea en blanco (o dos) ayuda a separar visualmente los bloques lógicos de código.
Por ejemplo, del capítulo Completo de Steve McConnell, Segunda edición sobre Diseño y estilo:
fuente
Sí por claridad.
Justo como hice en esta respuesta.
fuente
Lo hago pero me aseguro de documentarlo poniendo
(This line intentionally left blank.)
en la línea
fuente
Sí, pero no abuso de eso.
He visto código donde cada línea de código dentro de un método está separada por una línea en blanco, y se usan dos líneas en blanco donde se produce una separación lógica. Eso solo lo hace aún menos legible en mi opinión. También he visto espacios en blanco utilizados para hacer alineaciones locas, como esta:
El mismo mal uso del espacio en blanco horizontal se puede aplicar al espacio en blanco vertical. Como cualquier herramienta, úsala sabiamente.
fuente
Me critican mucho por escribir mi código de esta manera. No entiendo por qué alguien no lo haría de esta manera.
La legibilidad es muy importante cuando vuelves a un proyecto después de un período prolongado de tiempo y escucho un dicho "Siempre escribe el código si el siguiente tipo que lo está leyendo es un psicópata que conoce tu ubicación".
fuente
undo
unas pocas veces para hacer el trabajo (formateando las guerras no No conduzco a la productividad, por lo que no eliminaría por completo los comentarios y los espacios en blanco, pero mi preferencia es contra ellos en su mayor parte).No siempre escribo software, pero cuando lo hago, uso líneas en blanco para mayor claridad.
fuente
Estoy a favor de que el código sea lo más claro posible, y el espacio en blanco a menudo es una herramienta útil en ese esfuerzo. Pero no olvidemos refactorizar:
Como tiene varios miembros relacionados, son candidatos para una nueva clase.
Cada vez que el código no es lo suficientemente claro como para querer un comentario, le pregunto si puedo refactorizar para que el código sea lo suficientemente claro como para no necesitar el comentario.
¿Por qué no hacer un método para cada "párrafo"?
Si terminas con un montón de métodos en tu clase, mira mi nota anterior sobre cómo extraer una nueva clase.
fuente
Sí. Facilita el escaneo visual de un archivo. Entre otras cosas, aclara con qué línea va un comentario.
fuente
Utilizo líneas en blanco con moderación y coherencia, y consistentemente es más importante que con moderación. Sin embargo:
La mayor parte de eso no es terriblemente controvertido; lo que sigue podría ser. Observo que la notación K&R con los corchetes abiertos al final de la línea a menudo es deprimentemente seguida de una línea en blanco. Personalmente, no me gustan los corchetes al final de la línea y mezclarlos con una línea en blanco después de que el corchete no tiene sentido de la notación (IMNSHO). Coloque la llave abierta en la siguiente línea, por sí sola, y tendrá una línea en su mayoría en blanco (y, IMNSHO, un código más legible). Si debe usar una llave K&R al final de la línea, no desperdicie el ahorro de espacio vertical con líneas en blanco extrañas.
fuente
Escribe lo que sea más legible y menos sorprendente.
Esta función no necesita 12 líneas de comentarios de documentos.
De hecho, no necesita ningún comentario.
O líneas en blanco.
Le restarían valor a su esencia.
fuente
Dentro de la función? Raramente
Si tengo un bloque claro diferente, se refactoriza a una nueva función. Si pocos casos no valen la pena.
Para mí, las líneas en blanco dentro de la función es una de las "mejores prácticas" más incorrectas.
fuente
A menudo
Úselo para bloques lógicos de código que se procesan de manera similar. Una vez que agregue un comentario para mostrar que está haciendo un paso diferente, es hora de extraer el Método.
Buen espacio en blanco
Espacio en blanco malo
vs
vs
fuente
connection.close()
acloseConnection(connection)
item1
yitem2
variables globales que los métodos se comunican a través? Ick!No solo uso espacios en blanco, también uso llaves para mayor claridad.
Las llaves que uso para decir que estas pueden ser funciones.
fuente
Hubo un tiempo en que esparcía líneas en blanco generosamente a lo largo de mi código. Hoy en día, tiendo a ser más moderado. Creo que esto es parte de lo que Steve Yegge estaba hablando aquí :
Estoy fundamentalmente de acuerdo con él. Es mucho mejor comprimir el código para que pueda obtener la mayor cantidad posible en una pantalla que espaciarlo demasiado. Eso no quiere decir que nunca debas usar líneas en blanco. Es solo que creo que, a menos que la agrupación que intentas crear no aumente enormemente la legibilidad, hace más daño que bien.
fuente
Un profesor emérito dio dos grandes consejos
fuente
Mis reglas generales son estas:
Si tengo problemas para leer el código que escribí ayer, probablemente necesito extraer un método o tres.
Si mi definición de clase es demasiado larga para leerla fácilmente, probablemente necesite extraer un módulo / interfaz / objeto.
Definiciones de métodos: agregar una línea
Definiciones de módulo / clase: agregue dos líneas
fuente
Me gusta pensar en espacios en blanco de la misma manera que en los párrafos. Agrupa líneas que contribuyen a una idea.
Si está comenzando una nueva idea o una nueva faceta de la misma idea, comienza un nuevo párrafo, como este.
En código imperativo, agrupo tareas que realizan una tarea cohesiva; en el código declarativo, agrupo el código que describe una declaración coherente de una idea.
Claramente, no tiene problemas para hacerlo en inglés (algunas personas son horribles con los párrafos), por lo que con un poco de práctica, aplicar la misma habilidad al código no debería ser estresante.
fuente
Las líneas en blanco son imprescindibles en mi opinión. Los uso para separar diferentes bloques lógicos de código. Hace que el código sea legible. El código legible es un buen código;)
Mi código ideal sería que cada bloque lógico esté separado por una línea en blanco y un comentario en la parte superior de cada bloque que tenga una lógica principal.
Por supuesto, si las personas lo hacen agregando múltiples líneas en blanco en todas partes, me resulta muy irritante :(
fuente
Solo uso espacios en blanco dentro de una función / método para separar las declaraciones y el código.
Si siente la necesidad de tener algunas líneas para separar subbloques de código que implementan alguna lógica, entonces deberían estar en otra función / método privado. Depende de su compilador no hacer que esa carga sea demasiado grande.
típicamente, en código peusdo:
Si veo espacios en blanco inútiles, generalmente me estremezco.
fuente
El espacio en blanco es extremadamente valioso.
Aquí está el trato ... los nerds que escriben código complicado como E = MC 2 son excelentes para mostrar sus habilidades de programación.
Ahora avancemos seis meses, y son las 2:00 a.m. de la mañana y el sistema que no se ha visto en seis meses se ha roto en la línea misma de E = MC 2 . Esto es casi imposible de depurar ... todos se están volviendo locos.
Supongamos que el código se parece más a esto ...
Si son las 2:00 a.m. y el código está roto. Un vistazo rápido le mostrará que la línea tres debería haber sido
Problema resuelto.
En pocas palabras ... use espacios en blanco.
fuente
Como muchos otros han dicho, las líneas en blanco facilitan la lectura del código. Sin embargo, hay algunos idiomas que hacen cumplir este estándar. Uno que se me ocurre en la parte superior de mi cabeza (no tanto sobre líneas en blanco sino sobre sangría adecuada) es Python.
fuente
Estoy de acuerdo, uso espacios en blanco de la misma manera. Sin embargo, si me encuentro usando espacios en blanco para dividir un método en demasiadas partes, es una señal de que podría necesitar refactorizar ese código en varios métodos. Demasiadas secciones lógicas en un método pueden indicar que el método será más difícil de probar.
fuente
Los uso para separar el código en unidades lógicas. He visto muy pocos ejemplos de código que no utilizan líneas en blanco, por supuesto, se ofusca la ofuscación.
fuente
La respuesta del psicópata es la mejor, pero la reemplazaría suponiendo que la próxima persona es una idiota, y que asumirán que lo eres y querrás demostrar que están equivocados.
Igual de importante para la legibilidad es el uso de comentarios. Abro cada función o subrutina con un bloque de comentarios, explicando en texto claro, qué es, qué hace, cuáles son los argumentos y cuáles son los resultados esperados (incluida una lista de condiciones de error). Entonces no hay duda de para qué está destinado y / o diseñado. Lo que logra puede variar, pero eso está más adelante.
Creo que demasiados codificadores asumen que serán ellos, ellos mismos los que harán "reparaciones" en el código, o simplemente no les importará.
fuente
Las líneas en blanco son importantes. Sin embargo, desperdiciar toda una línea en blanco en la llave de apertura reduce la cantidad de código que puede ver en una pantalla completa. Debiera ser:
(No me hagas empezar a poner la llave '{' en la misma línea que 'for' ... eso es meshuggah).
fuente
Sí. Por legibilidad. A veces incluso pongo líneas en blanco en el código que no escribí. Me resulta más fácil entender el código cuando tienen agrupación lógica a través de líneas en blanco, como si pudieras "leer rápidamente" a través de él.
fuente
Deberíamos usar líneas en blanco entre los bloques de código como lo hacemos cuando escribimos una carta.
Por ejemplo, entre funciones, o dentro de una función cuando terminamos un ciclo ...
La gente le agradecerá un código limpio si tiene que hacer mantenimiento en él;)
fuente
Utilizamos el espacio en blanco recomendado por Microsoft StyleCop. Además de la legibilidad y la coherencia, descubrí que (junto con los tamaños de clase pequeños) el código correctamente establecido hace que sea mucho más fácil administrar las fusiones cuando varias personas de un equipo trabajan en las mismas áreas.
No estoy seguro de si es solo mi imaginación, pero las diferentes herramientas parecen hacer un mejor trabajo al reconocer dónde comienza y termina el código equivalente cuando se combina cuando se presenta de manera ordenada. El código bien diseñado es una alegría para combinar. Ok, eso fue una mentira, pero al menos el dolor se mantiene a niveles manejables.
fuente
Nunca una línea en blanco, no en todo el archivo. Eso no quiere decir que no haya interrupciones en el código:
Las líneas en blanco son para abrir secciones del código para trabajar, tiene un par de teclas de acceso rápido en su editor para llevarlo a la línea en blanco anterior / siguiente.
fuente