¿Por qué es tan importante el espacio en blanco al final? [cerrado]

111

Los espacios en blanco finales son un problema suficiente para los programadores, ya que los editores como Emacs tienen funciones especiales que lo resaltan o eliminan de forma automática, y muchos estándares de codificación requieren que elimines todas las instancias. Aunque no estoy completamente seguro de por qué. Se me ocurre una razón práctica para evitar los espacios en blanco innecesarios, y es que si las personas no tienen cuidado de evitarlo, pueden cambiarlo entre comillas, y luego obtener diferencias contaminadas con líneas aparentemente sin cambios, simplemente porque alguien eliminó o añadido un espacio.

Esto ya parece una buena razón para evitarlo, pero quiero ver si hay algo más que eso. Entonces, ¿por qué los espacios en blanco finales son tan importantes?

    
pregunta EpsilonVector 24.11.2011 - 18:56
fuente

8 respuestas

75

Razones por las que es importante para mí:

  • Cuando presiono la tecla "Fin", espero que el cursor vaya al final de la línea (dependiendo del editor que esté usando y de cómo esté configurado) y espero poder comenzar a escribir correctamente lejos. Si el cursor llega allí y tengo que eliminar 3 o 4 caracteres, es molesto. Especialmente si es inconsistente en todos los archivos.

  • Cuando tengo literales de cadena que abarcan varias líneas, los espacios en blanco al final pueden hacer que la cadena de salida se vea incorrecta cuando se usa.

Si bien no es estrictamente la programación, el espacio en blanco puede desordenar seriamente la entrada de datos, si hay un final o un inicio en un archivo que se analizará y se usará como entrada para otra cosa. Esto ocurre más cuando un archivo de entrada limpio y generado se ensucia cuando alguien lo edita en Excel o algo así y luego se arrastra el espacio en blanco (y otros problemas de formato).

    
respondido por el FrustratedWithFormsDesigner 24.11.2011 - 19:14
fuente
28

Realmente odio los espacios en blanco, pero la razón exacta es un poco vaga.

Supongo que el origen de ese sentimiento no está en la programación, sino en el campo de publicación de escritorio. ¿Alguna vez ha escrito un documento escrito por otra persona que necesita ser tipeado en una publicación? En todas las publicaciones modernas, especialmente cuando se usan columnas, es costumbre que las oraciones se sigan de forma secuencial dentro de un párrafo, sin comenzar una nueva línea para cada conciencia. Bueno, cuando hay espacios en blanco al final, se necesita mucho más esfuerzo para hacerlo bien (muchas acciones de búsqueda y reemplazo que eliminan los espacios dobles, etc.).

Otras razones (en programación), no buenas, lo sé, pero molestan a mi psique subconsciente de una manera tan intensa que me obliga a eliminarlo:

  • Se necesita más espacio de almacenamiento del necesario
  • El analizador tendrá que omitir un carácter adicional sin ninguna buena razón al compilar
  • Algunos editores pueden agregar una línea en blanco adicional cuando WordWrap está activado y la el espacio final no encaja

Sí, sí, lo sé! Lo sé, estas son razones basura. No soy un perfeccionista, pero ... bueno, tal vez lo sea.

La última razón que se me ocurre es el movimiento inconsistente del cursor. Se siente como si el cursor estuviera colgando en el aire al final de una línea, cada paso a la derecha puede hacer que caiga el éter o que se aleje hasta una extensión desconocida, simplemente se siente inestable (como esos bloques invisibles o que desaparecen donde está Super Mario solía saltar sobre él.

Probablemente pueda ser diagnosticado con trailpacefobia?

    
respondido por el Louis Somers 24.11.2011 - 19:50
fuente
20

Muchas de estas respuestas casi se refieren a la razón por la que es malo para mí, pero básicamente: "rompe" a los editores de texto. Mi experiencia es con vim.

Vim está diseñado para que las acciones comunes se asignen a las letras de forma tan limpia que ni siquiera tengas que pensar en qué letra o combinación de teclas golpear. Varias teclas de acceso rápido permiten que el cursor salte alrededor del texto tan rápidamente que solo se necesitan un par de pulsaciones para llegar a donde desee. Incluso cosas como plegar bloques de código es rápido, ya que puede presionar FIN o $ para saltar al final de la línea, donde el cursor debe superponerse {o} o (o) o algo; no es necesario interrumpir el flujo de pensamiento para obtener una idea en la pantalla.

Pero luego aparece un espacio en blanco al final, y los movimientos del cursor ya no son predecibles. Su proceso de escritura se está interrumpiendo porque algo que no puede ver está afectando a dónde va el cursor, por lo que tiene que romper su pensamiento para enviarlo a donde debería estar.

¿Alguna vez has notado cómo las personas se molestan cuando están realmente concentradas en una tarea y alguien las interrumpe? Sí, encontrar espacios en blanco finales cuando menos se espera es exactamente así.

Como una nota al margen, también he notado que las personas que no se preocupan por los espacios en blanco finales son quienes usan el mouse para la navegación, y tienden a ser mecanógrafos más lentos debido a esto ...

    
respondido por el Izkata 24.11.2011 - 23:28
fuente
17

Sorprendentemente, falta la respuesta más obvia: el espacio en blanco al final puede y puede producir errores difíciles de encontrar.

La situación más obvia son las cadenas multilínea. Python, JavaScript y Bash son algunos ejemplos de los idiomas que pueden verse afectados por esto:

print("Hello\·
····World")

produce:

  File "demo.py", line 1
    print("Hello\
                 ^
SyntaxError: EOL while scanning string literal

que es de alguna manera críptico y difícil de resolver si el editor no está configurado para mostrar caracteres de espacio en blanco.

Aunque resaltado de sintaxis puede ayudar a evitar estos casos, incluso Es más fácil no tener el problema en primer lugar al no dejar espacios en blanco al final de las líneas. Esta es la razón por la que algunos verificadores de estilo emitirán una advertencia cuando encuentren espacios en blanco al final, y algunos editores los recortarán automáticamente.

Ilustración:elresaltadodesintaxispuedeayudaraevitarespaciosenblancoensituacionesenlasquepuedeprovocarerrores,peronoconfíesoloenello.

Otrocontexto,quesemencionabrevementeen una respuesta anterior , son los datos almacenados en archivos.

Por ejemplo, los archivos CSV que contienen espacios en blanco al final pueden causar inconsistencias en los datos que también son muy difíciles de detectar: los analizadores que cumplen con los estándares recortarán el espacio en blanco (el estándar indica que los espacios en blanco iniciales o finales son irrelevantes, a menos que estén delimitados con comillas dobles) ), pero algunos analizadores pueden comportarse mal y mantener el espacio en blanco como parte de un valor.

Otros formatos personalizados pueden considerar específicamente que el espacio en blanco es la parte del valor, lo que lleva a situaciones consistentes pero aún así difíciles de depurar.

    
respondido por el Arseni Mourzenko 23.09.2015 - 16:36
fuente
14

Hace poco pasé un día buscando un error que resultó ser un final inesperado espacios en blanco en los datos.

    
respondido por el ddyer 24.11.2011 - 19:22
fuente
8

Cuando selecciono el código fuente del programa para copiarlo y pegarlo (o borrarlo) me resulta un poco molesto ver todos los espacios en blanco extra irregulares al final de las líneas: ya que tengo que leer el código mientras Al seleccionarlo, el espacio en blanco al final es un ruido innecesario. Ejemplo (los puntos representan el espacio en blanco):

if (fp)........
{....
    fclose(fp);.
}
else
{.....
    prinft("File is NULL\n");
}..

Este ejemplo es artificial, pero he visto muchos códigos que se parecen a esto.

    
respondido por el Giorgio 24.11.2011 - 19:42
fuente
7

¿Además del problema obvio que rompe el análisis en ciertos casos? Como ha señalado otro cartel, puede causar errores sutiles y difíciles de rastrear. El espacio en blanco no siempre es insignificante. En algunos casos, los espacios en blanco al final pueden cambiar significativamente el significado de una línea de código o datos.

En la mayoría de los casos, el espacio en blanco está ahí para formatear el código para lectores humanos. El espacio en blanco al final puede indicar varias cosas, incluyendo:

  • Una declaración incompleta;
  • Un comentario faltante;
  • Una edición errónea; o
  • Edición descuidada.

Dos de estos pueden resultar en un funcionamiento incorrecto, y otro puede hacer que sea más difícil comprender el código.

    
respondido por el BillThor 25.11.2011 - 07:09
fuente
4

Hay lenguajes de programación que son sensibles al espacio en blanco de la línea final. Por ejemplo, una secuencia de comandos TCL dará un error si hay un espacio en blanco al final de una línea.

    
respondido por el user81965 23.09.2015 - 13:27
fuente

Lea otras preguntas en las etiquetas