normas estándar estilos estandares estandar documentacion código codificación codificacion coding-style
haga clic aquí

coding-style - estilos - estándar de código



¿Tienes estándares de codificación? Si es así, ¿cómo se hacen cumplir? (13)

Nunca he visto fallar un proyecto debido a la falta de estándares de codificación (o cumplimiento de ellos), o incluso a la productividad. Si está dedicando algún tiempo a aplicarlas, está perdiendo dinero. Hay muchas cosas importantes de las que preocuparse (como la calidad del código).

Cree un conjunto de estándares sugeridos para aquellos que prefieren tener algo que seguir, pero déjelo así.

He trabajado en un par de proyectos en los que hemos dedicado mucho tiempo a debatir y redactar elaborados estándares de codificación que abarcan desde el diseño de la sintaxis hasta las mejores prácticas reales. Sin embargo, también he encontrado que estos son raramente seguidos en toda su extensión. Muchos desarrolladores parecen dudar en rechazar una revisión de código basada únicamente en violaciones estándares de codificación. Es decir, las violaciones se envían al repositorio regularmente.

Mis preguntas son: ¿tiene estándares de codificación? ¿Qué cubren? ¿Son seguidos por todos? ¿Y qué hace (si acaso) para asegurarse de que todos sigan los estándares?

Soy consciente de que hay una pregunta similar aquí , pero mi preocupación no es tanto cómo podrías hacerlo, sino cómo te estás enfocando realmente y cuáles son los beneficios percibidos.


¿Tienes estándares de codificación? ¿Qué cubre?

Sí, tiene convenciones de nombres, llaves obligatorias después de si, mientras ..., no se permiten advertencias, recomendaciones para la alineación de 32/64 bits, ningún número mágico, protectores de encabezado, inicialización de variables y reglas de formato que favorezcan la coherencia del código heredado.

¿Lo están siguiendo todos? ¿Y qué hacen (si acaso) para asegurarse de que todos sigan el estándar?

Sobre todo, obtener el acuerdo del equipo y un estándar de codificación algo ligero (menos de 20 reglas) nos ayudaron aquí.

¿Cómo se aplica?

Suavemente, no tenemos código de policía estándar.

  • La aplicación de la norma se verifica en el momento de la revisión
  • Tenemos archivos de plantilla que proporcionan el estándar repetitivo

Aprovechamos las acciones de salvar y formateadores de Eclipse. Tenemos un estándar sugerido, pero en realidad nadie lo está aplicando, por lo que hay algunas variaciones en lo que realmente está formateado y cómo.

Esto es algo molesto (para mí), ya que varias variaciones del espacio en blanco se envían como actualizaciones al repositorio SVN ...


Creo que la mejor manera de ver los estándares de codificación es en términos de lo que espera lograr aplicando, y el daño que pueden causar si se aplica mal. Por ejemplo, veo lo siguiente como bastante bueno;

  • Documente y proporcione pruebas unitarias que ilustren todos los escenarios típicos para el uso de una interfaz determinada para una rutina o módulo determinado.
  • Siempre que sea posible, use las siguientes bibliotecas de clases de contenedor, etc.
  • Utilice afirmaciones para validar los parámetros entrantes y los resultados devueltos (C & C ++)
  • Minimizar el alcance de todas las variables
  • Accede a los miembros del objeto a través
  • Utilice new y delete sobre malloc y gratis
  • Use las convenciones de nombres prescritas

No creo que imponer un estilo más allá de esto sea una gran idea, ya que los diferentes programadores son eficientes utilizando diferentes estilos. Obligar a los programadores a cambiar de estilo puede ser contraproducente y causar pérdida de tiempo y calidad. Los estándares deben mantenerse cortos y fáciles de entender.


Creo que los estándares de codificación son muy importantes. No hay nada más frustrante que tratar de encontrar las diferencias entre dos revisiones de un archivo solo para descubrir que todo el archivo ha sido modificado por alguien que lo reformateó todo. Y sé que alguien va a decir que ese tipo de práctica debe ser eliminada, pero la mayoría de los IDE tienen una función de "formato de reformateo" (Ctrl-K Ctrl-D en Visual Studio, por ejemplo), lo que hace que se mantenga el código mucho más fácil.

He visto proyectos fracasar debido a la falta de estándares de codificación: las guerras de corsé rizado en mi última compañía contribuyeron a un colapso en el equipo.

He encontrado que los mejores estándares de codificación no son los estándares inventados por alguien en el equipo. Implementé los estándares creados por iDesign ( haga clic aquí ) en nuestro equipo, lo que lo aleja de cualquier clase de resentimiento que pueda tener si intenta implementar su propio "estándar".

Una mención rápida de Code Style Enforcer ( haga clic aquí ), que es bastante bueno para resaltar el incumplimiento en Visual Studio.


He trabajado en lugares con prácticas de codificación apenas seguidas, y otras en las que están cerca de ser aplicadas, o al menos fáciles de verificar.

Algunas sugerencias:

  • Lo más importante es obtener la idea de que la coherencia supera su estilo preferido personal. Debería discutirse el estándar de codificación tanto antes como después de que se instituya, pero a nadie se le debería permitir que simplemente opte por no participar.
  • Las revisiones de código deben ser obligatorias, con el comentario de registro incluido el nombre de usuario del revisor. Si está utilizando un SCM adecuadamente poderoso, considere no permitir registros que no tengan un nombre de revisor válido.
  • Debería haber un documento que todos conozcan sobre la elaboración de los estándares de codificación. Con suficiente detalle, no debe excederse en el camino de los argumentos.
  • Donde sea posible, automatice la verificación de las convenciones (a través de Lint, CheckStyle, FXCop, etc.) para que sea fácil para el autor y el revisor obtener una verificación rápida de cosas como ordenar las instrucciones de importación / uso, espacio en blanco, etc.

Los beneficios son:

  • Principalmente coherencia: si lo haces para que cualquier persona pueda sentirse "en casa" en cualquier parte de la base de código en cualquier momento, te brinda más flexibilidad.
  • Difusión de las mejores prácticas: si se prohíben los campos públicos, estructuras mutables, etc., entonces nadie puede colocar accidentalmente una bomba de tiempo en su código. (Al menos, no es una bomba de tiempo que está cubierto por el estándar. No hay un estándar de codificación para el código perfecto, por supuesto :)

EDIT: Debo señalar que los estándares de codificación son probablemente los más importantes cuando se trabaja en grandes empresas. Creo que ayudan incluso en pequeñas empresas, pero es probable que haya menos necesidad de procesar el estándar en ese momento. Ayuda cuando todos los desarrolladores se conocen personalmente y comparten el mismo sitio.


Tenemos una especie de estándar ''suelto''. Tal vez debido a nuestra incapacidad para llegar a un acuerdo sobre algunos de esos "cuántos espacios poner allí y allá", "dónde poner mi llave abierta, después de la declaración o en la siguiente línea".

Sin embargo, como tenemos desarrolladores principales para cada uno de los módulos o componentes dedicados, y algunos desarrolladores adicionales que pueden funcionar en esos módulos, tenemos la siguiente regla principal:

"Mantener el estilo utilizado por el desarrollador principal"

Entonces, si quiere hacer 3 indentaciones espaciales, hágalo usted también.

No es ideal, ya que podría requerir volver a sintonizar la configuración de su editor, pero mantiene la paz :-)


StyleCop hace un buen trabajo al aplicar prácticas de diseño de codificación y puede escribir reglas personalizadas si algo no está cubierto en las reglas básicas que es importante para usted.


¿Tienes estándares de codificación?

Sí, difiere de un proyecto a otro.

¿Qué cubre?

Código (clase, variable, método, constante), denominación SQL y convención de formato

¿Lo están siguiendo todos?

Sí, a cada nuevo participante en el proyecto se le puede pedir que cree un proyecto de demostración siguiendo la convención de codificación de la organización, luego se revisa. Este ejercicio hace que el desarrollador se sienta a gusto antes de comenzar un trabajo real.

¿Y qué hacen (si acaso) para asegurarse de que todos sigan el estándar?

Use StyleCop y FxCop para asegurarse de que sean seguidos religiosamente. Se mostraría como advertencia / error si el código no cumple con la convención de codificación de la organización.

El sistema Visual Studio Team tiene buenas políticas de análisis y anlisis de código que evitarían que los desarrolladores ingresen código que no cumpla

Espero eso ayude

Gracias, Maulik Modi


JTest de ParaSoft es decente para Java.


Nuestros estándares de codificación se enumeran en nuestro Manual del programador para que todos puedan consultarlos fácilmente. Son efectivos simplemente porque hemos aceptado a todos los miembros del equipo, porque las personas no temen elevar los estándares y problemas de estilo durante las revisiones de los códigos, y porque permiten cierto nivel de flexibilidad. Si un programador crea un nuevo archivo, y ella prefiere colocar el corchete en la misma línea como una declaración if, eso establece el estándar para ese archivo. Cualquiera que modifique ese archivo en el futuro debe usar el mismo estilo para mantener las cosas consistentes.

Debo admitir que, cuando leí por primera vez los estándares de codificación, no estaba de acuerdo con algunos de ellos. Por ejemplo, usamos un cierto estilo para declaraciones de funciones que se ve así:

static // Scope void // Type declaration func( char al, //IN: Description of al intl6u hash_table_size, //IN/OUT: Description of hash_table_size int8u s) //OUT: Description of s { <local declarations> <statements> }

Nunca había visto eso antes, así que al principio me pareció extraño y extraño. Mi reacción instintiva fue, "Bueno, eso es tonto". Ahora que he estado aquí un tiempo, me he ajustado al estilo y aprecio cómo puedo comprender rápidamente la declaración de función porque todos lo hacen de esta manera.


Tengo una combinación de estándares de codificación personal y de la compañía que aún están evolucionando en cierta medida. Cubren la estructura del código, las pruebas y diversos documentos que describen varios bits de funcionalidad.

A medida que evoluciona, el resto de mi equipo lo adopta e interpreta. Parte de lo que sucederá en última instancia es que si hay consenso en algunas partes, esas se mantendrán mientras otras partes pueden seguir siendo un código que no necesariamente va a estar a la altura del tabaco.

Creo que puede haber cierto respeto o admiración profesional que actúe como una forma de lograr que las personas sigan los estándares de codificación, donde algunas partes se vuelven claras después de su aplicación, por ejemplo, refactorizar una función para que sea más legible o agregar pruebas de alguna forma. con varios "momentos de bombilla" para tomar prestada una frase de Oprah.

Otra parte del beneficio es ver qué tan bien otros trabajan, qué tipo de consejos y técnicas tienen y cómo se puede mejorar con el tiempo para ser un mejor desarrollador.


Oh, sí, soy la policía estándar de codificación :) Acabo de escribir un script simple para verificar y corregir el código periódicamente (mi estándar de codificación es lo suficientemente simple como para implementarlo.) Espero que la gente reciba el mensaje después de ver todos estos "códigos". "mensajes de limpieza de convenciones" :)