28 votos

Vacío de nueva línea al final de los archivos fuente de java

En mi proyecto actual siempre insertar vacía de nueva línea al final de los archivos fuente de java (que fue forzada por el líder del proyecto). También con el cumplimiento de esta checkstyle (con nivel de error).

Yo estaba buscando este tema por un largo tiempo, pero por desgracia no puedo encontrar ninguna razón convincente para ello. Parece que otros desarrolladores están bastante indiferente sobre esto porque acaba de una casilla de verificación en eclipse formateador y se hace automáticamente. Pero todavía me siento a mí misma, no muy contentos con esto, (porque yo no ahora, ¿por qué es necesario y por qué puede ser importante). Así que mi pregunta es:

Por qué vacío nuevas líneas al final de los archivos fuente de java son necesarios? Es real o es sólo relictos del pasado y no deseable en la contemporánea java bases de código?

22voto

Bert F Puntos 27237

Yo creo que están tratando de asegurar que cada archivo termina con un punto final carácter de nueva línea. Esto es diferente de terminar con una línea en blanco, un.k.una. vacío de salto de línea.

Edit: Como @Fácil Ángel sucintamente aclarado en los comentarios: los newline = "\n" y la línea en blanco = "\n\n"

Creo que tampoco:

  1. su ejemplo es la de exigir que cada archivo termina con un carácter de nueva línea, pero su ser mal interpretado como la de exigir que cada archivo final con una línea en blanco (es decir, una línea que termina en un salto de línea), o bien

  2. ellos están tratando de asegurar que cada archivo termina con un carácter de nueva línea por el hecho de exigir a cada archivo final con una línea en blanco (un.k.una. línea de vacío que termina con un salto de línea), asegurando así que los archivos termina con al menos una línea nueva (y posiblemente redundante salto de línea adicional - excesivo?).

A menos que el editor muestra newline símbolos, sus no siempre es clara en algunos de los editores que un archivo:

  1. NO termina una nueva línea en todo,
  2. TERMINA con un solo de ella la siguiente línea, o
  3. TERMINA con una nueva línea en blanco, es decir, 2 trailing saltos de línea

Creo que la mayoría de los modernos editores de código fuente insertar un punto de salto de línea. Sin embargo, cuando el uso de la tercera edad más general de los editores, yo siempre trate de asegurarse de mis archivos de código fuente (texto y archivos en general) siempre terminaban con un final de salto de línea (que, en ocasiones, salió como una línea en blanco vacío/newline dependiendo del editor que estaba usando) porque:

  1. cuando se utiliza cat , la visualización del archivo en la línea de comandos, si el archivo carecía de un punto de salto de línea, la siguiente salida (como el intérprete de comandos o un visual delimitador de una secuencia de comandos de mayo de salida entre archivos) acabaría apareciendo a la derecha después de que el último no-carácter de nueva línea en lugar de comenzar en una nueva línea. En general, la final de salto de línea hizo archivos de usuario y de secuencia de comandos de usar.

  2. Creo que algunos de los editores (no recuerdo los detalles) sería insertar automáticamente un punto de salto de línea si el archivo de texto carecía de uno. Esto haría parecer que el archivo fue modificado. Podría ser confuso si usted tiene un montón de archivos abiertos en ventanas diferentes y, a continuación, ir a cerrar todos ellos - el editor le pide que guarde pero no está seguro de si usted ha hecho "cambios reales" en el archivo o solo la auto-insertar salto de línea.

  3. Algunas herramientas, como las diff y algunos compiladores se quejan de una falta al final de salto de línea. Esto es más ruido que los usuarios y las herramientas pueden tener que lidiar con.


Editar:

Acerca de los editores de la adición de saltos de línea y no ser capaz de ver si hay una nueva línea de vs en blanco de nueva línea al final del archivo, acabo de probar Vim, Eclipse, y Emacs (en mi sistema de Windows con Cygwin): he abierto un nuevo archivo, escribió la 'h' 'e' 'l' 'l' 'o' y se guarda sin golpear [ENTER]. Examiné cada archivo con od -c -t x1.

  1. Vim hizo agregar un punto de salto de línea.
  2. Emacs hizo agregar un punto de salto de línea.
  3. Eclipse NO agregar un punto de salto de línea.

Pero

  1. Vim NO me permiten cursor hacia abajo para una línea en blanco debajo de "hola".
  2. Emacs ¿ me permite cursor hacia abajo para una línea en blanco debajo de "hola".
  3. Eclipse NO me permiten cursor hacia abajo para una línea en blanco debajo de "hola".

Interpretar como quieras.


Mi práctica personal es tratar de asegurar que los archivos de texto termina con un final de salto de línea. Siento que hay al menos sorprender a la gente y de las herramientas con que este es el caso. Yo no tratar a los archivos de origen diferente de los archivos de texto en este sentido.

Google se convierte este:

que, a partir de esta edición, mostrar éxitos que hablar acerca de las advertencias acerca de una falta al final de la línea que viene de compiladores de C, svn (porque de diff), diff, etc. Creo que hay una expectativa general de que los archivos de texto (archivos de código fuente incluido) terminan con un final de salto de línea y menos sorprendente (y menos ruidoso) cuando tienden a estar allí.

Finalmente esto es interesante:

Desinfección de archivos sin ella la siguiente línea
Los archivos de texto deben tener todas sus líneas, terminado por caracteres de salto de línea (es decir, \n). Esto es afirmado por POSIX, que dice que un archivo de texto es

Un archivo que contiene caracteres organizados en cero o más líneas.
Una línea que, a su vez, se define como
* Una secuencia de cero o más caracteres más un carácter de terminación.


Sin EMBARGO, todo lo que dijo, esta es solo mi práctica personal. Estoy feliz de compartir mi opinión a cualquiera que pregunte, pero no me imponer esto a nadie. Yo no siento que esto es algo que vale la pena exigir, como yo lo digo aquí:

Mientras que yo soy uno de cuyos todo por coherencia, también estoy en contra de la microgestión de cada bit de estilo. Tener una lista enorme de convenciones de codificación, especialmente cuando algunos de ellos parecen arbitrarias, es parte de lo que desalienta a las personas a partir de los siguientes. Creo que las directrices de codificación deben ser optimizadas para los más valiosos prácticas que mejoran la ilities. ¿Cuánto es la legibilidad, facilidad de mantenimiento, rendimiento, etc mejorado por el mandato de esta práctica?

14voto

Leo Holanda Puntos 755

Aquí es una buena razón para tener extra de salto de línea al final:

Si usted tiene un archivo sin salto de línea al final, la próxima vez que se edite el archivo para agregar otra línea, la mayoría de combinación de herramientas va a pensar que la línea existente ha cambiado (estoy al 90% seguro de SVN también lo hace).

En el ejemplo de abajo, la línea que contiene "la última línea antes de editar" no tiene el salto de línea. Si tratamos de añadir una nueva línea de "la última línea después de editar", como podemos ver tanto en las líneas 5 y 6 están marcados como cambiado, pero el contenido real de la línea 5 en ambas versiones son las mismas.

Without line-break before EOF

Si todo el mundo está siguiendo a su líder de proyecto propuesta, entonces este sería el resultado (sólo la línea 6 se diferencian de archivo original). Esto también evita malentendidos durante funde.

With line-break before EOF

Si bien esto puede no parecer una gran cosa, digamos que un desarrollador (A) en realidad el objetivo de cambiar el contenido de la última línea y el otro desarrollador (B) se añadió una nueva línea. Si no se utiliza el salto de línea antes de EF, entonces usted tiene un conflicto de combinación porque el desarrollador B se vio obligado a modificar el ex última línea para añadir un salto de línea. Y... a quien le gusta CVS/SVN conflictos?

5voto

extraneon Puntos 13362

Eche un vistazo a este MODO de pregunta..

La respuesta descaradamente robado de Ralph Rickenbach:

Muchas de las herramientas anteriores se portan mal si la última línea de datos en un archivo de texto no es termina con un salto de línea o de transporte volver / la nueva línea de combinación. Ellos ignorar esa línea, como se termina con ^Z (ef) en su lugar.

Así que me imagino que es en su mayoría un fantasma del pasado. Por desgracia, los fantasmas pueden morder en la cola si no correctamente exorcizar ellos. (Es su servidor de generación de edad y los usos más antiguos scripts de shell para resúmenes y esas cosas).

1voto

Leo Izen Puntos 1575

A veces el compilador no analizar correctamente:

Error: Reached end of file while parsing

1voto

Marcell Puntos 330

Intente cortar/pegar el archivo completo. Algo fallo en checkstyle o eclipse : )

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X