Actualmente estoy trabajando en un lugar que podría estar buscando forzar a los desarrolladores a usar un formateador de código automático en el control de versiones. Estoy buscando opiniones de los desarrolladores sobre las ventajas y desventajas de hacer esto ... cómo crees que ayudaría u obstaculizaría a los desarrolladores. Mi caso específico involucra Java / JSP, pero creo que la pregunta podría aplicarse a cualquier lenguaje.
java
formatting
coding-standards
Nerdfest
fuente
fuente
Respuestas:
Creo que es muy importante hacer esto. Este es el por qué:
Si lo hace, recomendaría a todos que revisen todo el código, luego una persona hace un reformateo en toda la base del código, luego lo vuelve a verificar para que haya un conjunto de cambios "gigantes" para formatear (que todos pueden ignorar), pero después de eso, todas las diferencias son diferencias de código real.
Si lo hace poco a poco, estará mezclando cambios de código real con cambios de formato y las cosas se volverán innecesariamente desordenadas en el terreno del cambio.
fuente
Voy a arrojar mi propia respuesta aquí, ya que las personas solo parecen estar agregando ventajas. Lo que veo como desventajas son:
En pocas palabras, un conjunto de convenciones no automatizado establece requisitos mínimos de estilo / legibilidad, donde las convenciones automatizadas establecen un mínimo y un máximo.
Recuerdo haber visto VB (quizás la versión 5) y encontrar una de las cosas más molestas al respecto era que reformatearía mi código a la fuerza y eliminaría las cosas más allá de su formato básico.
fuente
Me parece que el formato de código forzado es genial. Permite a un desarrollador atravesar todo el corpus de código sin que sus ojos reboten en todas partes. Tener este estándar también ayuda a los desarrolladores novatos a romper los malos hábitos.
fuente
La desventaja principal es perder el formato personalizado donde realmente importa.
Imagine una comprobación de cordura típica if () que fallará si alguna de las condiciones específicas está presente pero no se cumple ...
Esto es legible gracias a una sangría razonable que sigue la estructura lógica de las condiciones.
Ahora su herramienta automatizada no tiene idea de la separación lógica de diferentes condiciones en líneas relacionadas. No ve ninguna razón por la cual cada grupo 3-4 condiciones en una línea y divide la siguiente condición por la mitad. O lo dividirá, una expresión de comparación por línea. Incluso puede parecer más bonito en la pantalla, pero se perderá la lógica.
fuente
He agregado una respuesta con desventajas, y también agregaré lo que considero una gran ventaja.
Cuando utiliza un reformateo de código automatizado en commit, en realidad abre la posibilidad de variaciones de preferencias personales sin el efecto habitual de que sus preferencias se inflijan a otros. Puede tener su código de formato IDE con un estándar común en commit, pero mostrárselo en su formato preferido sin afectar a los demás.
Esto para mí es casi el Santo Grial de la codificación basada en convenciones ... obtienes las ventajas de un formato de código común, pero aún así permites que las preferencias personales sean compatibles sin conflictos.
fuente
Depende de sus necesidades, pero algunas restricciones son bastante útiles, por ejemplo, cada if () debe ir seguido de llaves, ya que es bastante fácil obtener ese tipo de error si está refactorizando.
Considere ese caso:
Si ahora desea agregar algo de registro al caso if, puede escribir de forma accidental:
Y de repente su método siempre regresa
foo
.Editar: no se trata de formateo automático sino de verificación de estilo. Lo siento si esa respuesta también estuvo fuera de tema. :)
fuente
Ayuda en gran medida a uniformar el código en la empresa, y gracias a eso generalmente produce una estructura más fácilmente comprensible y más fácil de mantener para su producto.
fuente
Así, las ventajas son las mismas que cualquier formateador de código, como la estandarización del código, semántica entre los desarrolladores, etc. Las únicas posibles inconvenientes que veo es la falta de un ojo humano después del formateo, añadir algunas excepciones, etc.
, así que Supongo que es mejor considerar un formateador IDE en lugar de un formateador de tiempo de registro.
fuente
En mi experiencia, es algo bueno. Sin uno, las comparaciones de código a menudo muestran un desorden de formato de espacios en blanco y pueden ocultar cambios reales en el código. En mi experiencia, jugar con el formateo de alguien no es el pecado que se supone que es, especialmente con los beneficios potenciales de la coherencia en todo el equipo.
fuente