¿Qué importancia tienen las pautas de formato de código? [cerrado]

18

Los estándares de codificación son comunes en cualquier organización de desarrollo de software, pero ¿qué importancia tienen que seguir? Puedo entender la necesidad de cierta coherencia, pero cuando se trata de cosas simples como la posición de las llaves, la longitud de la línea, etc., no estoy seguro de que los estándares excesivamente estrictos contribuyan mucho al desarrollo de software.

¿No es más importante que su código sea legible, no que se ajuste a un estándar predefinido? Parece que son más como ... pautas de todos modos.

Derekerdmann
fuente

Respuestas:

12

Pedir a todos que se adhieran al 100% a la misma directriz de formato de código estándar es como pedirles a todos que colaboren por separado para escribir un documento de 100 páginas con el mismo estilo de escritura.

Esperemos que todos escriban el artículo en inglés (o en el mismo idioma), pero serán evidentes diferentes estilos. Algunos lo escribirán bien, otros no. Algunos usarán contracciones, otros deletrearán las palabras completamente (ejemplo: es muy cierto). Etc.

Creo que tocaste los puntos más importantes:

  1. Es una directriz
  2. Legibilidad

Si desea que el código se adhiera al mismo formato, como un papel con el mismo estilo de escritura, deberá editarlo y revisarlo. El código deberá ser limpiado, revisado, refactorizado, etc.

Nunca he estado en una tienda donde estaba completamente satisfecho con el estilo o el formato de codificación de otro desarrollador (como mínimo porque no es exactamente como el mío). Pero estaré contento si puedo leerlo / entenderlo y si es consistente. Todo lo demás es el azúcar en el azúcar sintáctico.

Entonces, para responder a su pregunta: algo importante, pero ciertamente no es el fin del mundo si no lo hacen.

esponja
fuente
3
Especialmente # 2: legibilidad. A veces, un fragmento de código específico puede hacerse más legible desviándose de la guía.
Bart van Heukelom el
Gracias a los IDEs actuales, puede acercarse al 100% si reformatea el código en función de una plantilla con cada operación de guardado. Eclipse lo hace muy bien.
Markus
1
@ Markus esto funciona hasta que alguien quiera usar otro IDE o editor. Prefiero hacerlo en un enlace previo al compromiso para dar más libertad a los desarrolladores.
Gustav Karlsson el
Punto justo @GustavKarlsson, de esta manera usted centraliza el formato y crea un único punto de cambio en caso de que cambie el "estándar". Como solución alternativa (con más esfuerzo involucrado), siempre podría escribir una plantilla adicional para el nuevo IDE.
Markus
5

Para los estándares de formato, sigo lo que hacen los demás. Si están usando PascalCase para todo, entonces uso PascalCase. Si usan _camelCase, entonces yo uso _camelCase. ¿Por qué? Porque limita la cantidad de reformateo que hago, y limita lo que otros tienen que hacer para que "se vea bien". Los estándares de formato generalmente están ahí para facilitar las cosas a todos.

TheLQ
fuente
5

En mi trabajo actual, una de mis primeras tareas fue crear un estándar de codificación para nuestro grupo de desarrollo.

Mi primer esfuerzo fue de unas sesenta páginas (incorporó gran parte de las Pautas del Marco de Microsoft). Me pidieron que lo redujera, y mi siguiente esfuerzo fue de diez páginas, utilizando ideas de una variedad de buenas fuentes. Me pidieron que lo redujera nuevamente, y finalmente lo reduje a tres o cuatro páginas, creo.

Nunca fue adoptado.

¿Por qué? Porque trabajo con muchas personas realmente inteligentes, que ya siguen instintivamente un estándar de codificación sensible.

Por mi parte, sigo las pautas generalmente aceptadas de Microsoft y emulo los estilos de uso común de otros (Javascript y jQuery están formateados de manera diferente a C #, a pesar de que ambos son lenguajes de llaves). También rompo las reglas de vez en cuando, al hacerlo, el código será más legible.

Robert Harvey
fuente
¿Por qué escribiste tu propio estándar de codificación cuando existen tantos, y en realidad son estándar para el lenguaje / marco utilizado?
Florian Margaine
2
Nunca fue adoptado - tadaa, y estaba la declaración que estaba buscando mientras buscaba las respuestas. Ese es el objetivo: cuantas más personas y mayor sea la complejidad y la arbitrariedad de las reglas, es menos probable que sean adoptadas por la mayoría del equipo. A menos que no se aplique de alguna manera, como lo hacen Visual Studio o el lenguaje Go, los desarrolladores tienden a seguir sus propias mentes. Estoy esperando casi 10 años para el IDE que separa el contenido del código del estilo del código.
JensG
2

Si usa un IDE que hace lo básico por usted (Visual Studio, por ejemplo), deje que el IDE haga lo suyo y lo que parezca aún difícil de ver, modifique siempre que deje que el IDE haga lo suyo o la siguiente persona que lo formatee automáticamente lo matará de todos modos.

Lo que es más legible para una persona no será para todas las personas.

Si no está utilizando este tipo de IDE, obtenga uno. Incluso pensar en esto durante más de 10 minutos es un desperdicio de recursos en mi humilde opinión.

Cuenta
fuente
44
Tengo que estar en desacuerdo. No encuentro nada más irritante que un IDE que cambie el formato por sí solo. ¿Por qué debería dejar que modifique mi código sin mi consentimiento? Corta una parte decente de control que me gusta tener sobre mi trabajo.
derekerdmann
Bill, ¿estás hablando de las convenciones de nomenclatura de arrastrar y soltar que genera el IDE, como TextBox01? ¿O te refieres a un complemento de Visual Studio como Resharper?
Spong
Derek: sí, eso es molesto, pero el tiempo que me ahorra de no tener que prestarle atención el 90% del tiempo vale el 10% del tiempo que tengo que luchar.
Bill el
sol: me refería a formatear solo en este caso. Estaría bien con los nombres de control predeterminados en drop solo si fuera extremadamente obvio lo que estaba sucediendo. en muchas formas que se desmorona después del segundo control. No soy un gran fanático de los compartidores, pero cuando lo uso tampoco trato de corregir lo que genera. No luches contra tu conjunto de herramientas cuando no sea necesario.
Bill
Puede haber múltiples IDEs en el mismo equipo, por ejemplo, Eclipse e IDEA para Java. Se necesitaría un poco de esfuerzo para configurar el formato del código en forma de archivos de configuración, pero vale la pena.
talonx
1

Creo que hay un beneficio no mencionado en ayudar a comprender rápidamente el código. Cuanto más similar sea el formato del código en un proyecto y en todos los desarrolladores, más fácil (y más inconscientemente) podrá trabajar con el código.

He tenido desarrolladores junior que vienen a mí después de tratar de lidiar con errores incluso simples durante un período prolongado de tiempo. Después de tomarse unos minutos para aplicar nuestro formato de código con ellos, pudieron ver rápidamente el error que se habían perdido antes.

Si bien la legibilidad es definitivamente importante. Si sus estándares de formato de código están bien pensados ​​y se usan correctamente, es posible que pueda ir más allá de solo poder leer el código y poder comprender el código aún más rápido.

Un conjunto de pautas que uso al desarrollar o actualizar nuestros formatos de codificación son los Principios de Agrupación de Gestalt: http://en.wikipedia.org/wiki/Gestalt_psychology#Gestalt_laws_of_grouping

Como resultado directo / ejemplo, nuestro formato de código requiere que cualquier código de bloque (if, switch, etc.) tenga la llave abierta en la siguiente línea, de modo que se alinee con la llave de cierre:

if(true)
{
}

Con el razonamiento de que, según el Principio de simetría, su mente verá las llaves abiertas y cerradas y más rápidamente podrá percibir el bloque de código de forma natural.

Chris
fuente
After taking a few minutes to apply our code format with them, they were quickly able to see the bug that they had missed before.Esto no se debe a que su formato de código los ayudó a ver el error. Es porque la tarea de reformatear el código los obligó a mirar cuidadosamente el código que acababan de leer antes.
Brandin
1

No importa qué idioma o herramienta use, invente algo. Configure su IDE y verifique el archivo de configuración.

Cuando alguien revisa el proyecto, usará los mismos estilos de formato. No importa cuál sea el estilo, solo que sea consistente. Tengo mis propias preferencias con respecto a los espacios v. Pestañas, y en qué línea continúan las llaves. Pero más que mis propias preferencias, solo me importa que un archivo de código fuente determinado esté de acuerdo consigo mismo. Lo hace mucho más legible de lo que es una mezcla resultante de una guerra de formatos.


fuente
0

Lo peor que he encontrado hasta ahora es no usar estándares de codificación. Y tiene prohibido hacer que algún bloque de código sea más legible porque rompe las herramientas diff ... Porque estamos usando parches para aplicar cambios (solicitud de cambio / corrección de errores -> arreglo / cambio -> parche -> parche aplicado por persona "confiable" -> commit) puede obtener un código fuente bastante divertido (desde el punto de vista de la legibilidad). Al menos no tenemos a nadie que use variables de dos letras (-.

[despotricar] Lo más divertido es que todos están de acuerdo en que necesitamos cambiar esto. Incluso hubo un par de intentos de reformateo (automatizado en el commit), pero debido a que falta una sola opción de formato pequeño y diminuto, todo se acabó. Vista ... [/ rant]

Audrius
fuente
0

Las pautas ayudan a mejorar la calidad del código:

  • desde el punto de vista del escritor: muchas reglas apuntan a reducir la introducción de errores. Por ejemplo, una regla que indica que if()o for(;;)construcciones deben ir seguidas de un bloque y no una sola instrucción, hace que la intención inicial del codificador explícita y ayuda a mantener próximos codificadores esto.

  • desde el punto de vista del lector: el código que sigue las pautas acordadas se revisa de manera más eficiente que el código con varios estilos. El revisor sabe mejor con menos esfuerzo dónde buscar posibles errores.

Mouviciel
fuente
0

No existe un estándar universal para lo que un equipo debe o no debe hacer. Algunos equipos deben seguir pautas estrictas, otros no.

El punto es que deben trabajar juntos como un equipo y decidir qué es lo mejor para su equipo . El código debe ser fácil de leer, porque se lee órdenes de magnitud más veces de lo que se escribe. Si su equipo necesita orientación para crear código legible, cumpla con un estándar de codificación. Si no lo haces, no lo hagas.

Dicho todo esto, creo que la mayoría de los equipos se beneficiarían al acordar una forma estándar de nombrar variables, funciones y clases, posicionar llaves, etc. Si el equipo no puede ponerse de acuerdo en algo tan simple como eso, ¿cómo pueden esperar unirse y tomar las decisiones realmente importantes? Además, su equipo no estará compuesto por las mismas personas para siempre: la gente se va, se contrata gente nueva. Cuanto más fácil sea para las personas nuevas asimilar la base de código, más rápido podrán contribuir al equipo sin disminuir la calidad del código.

Bryan Oakley
fuente