2010-03-12 20 views
31

C++ tiene varios tipos de estilos: MFC, Boost, Google, etc. Me gustaría examinar estos estilos y determinar cuál es el mejor para mis proyectos, pero quiero leer la guía de estilo oficial . ¿Alguien tiene una guía oficial que suelen usar?Enlaces a guías de estilo oficiales

Aquí hay dos que encontré. Apuesto a que hay más:

Nota: Esta no es una discusión acerca de qué estilo es el mejor ... sólo una llamada de estilo oficial guía que la gente utiliza actualmente. Por favor, evita criticar otras guías de estilo que no te gusten.

Pregunta adicional: ¿Existe una buena herramienta que pueda examinar el código fuente y decir si coincide con una guía de estilo determinada?

+7

wiki de la comunidad? – Francesco

+1

Me encanta cómo stackoverflow se contradice a sí mismo. Este está cerrado como "fuera de tema" y el hilo del libro de C++ tiene miles de votos ascendentes: https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – JohnJohn

Respuesta

2

Puedo usar mi propio estilo, que I have written up here. Ya sea que esté interesado en él como un estilo, si está buscando estilos en general, puede encontrar mi discusión sobre la motivación para que sea útil.

1

A la pregunta complementaria: personalmente no conozco ninguna herramienta que analice el estilo en uso, pero hay herramientas que reformatean la fuente a una guía de estilo determinada. Uno que viene a la mente es Artistic Style.

9

No existe una guía de estilo "oficial": el estándar de C++ es totalmente silencioso en cuanto a estilo. Un libro sobre el tema por dos chicos de C++ muy conocedores es C++ Coding Standards por Sutter & Alexandrescu.

4

C++ no tiene y no necesita un estilo oficial. Muchas organizaciones imponen guías de estilo a sus colaboradores para tratar de mantener algún tipo de apariencia corporativa; algunos de estos contienen fragmentos de buenos consejos, pero muchos simplemente te obligan a agregar decoraciones extrañas que parecían una buena idea para alguien que escribe un idioma completamente diferente en la década de 1980.

El único consejo realmente útil encontrará entre los gofres es:

  • definir una forma consistente de distinguir los tipos, objetos y algunos tipos de función (como descriptores de acceso y fábricas), por lo que' Sabrá escribir (por ejemplo) Thing thing = GetThing(); sin buscar los nombres.
  • No empieces los nombres con guiones bajos. Esto está prohibido en algunas circunstancias, y es más simple y más legible no hacerlo que preocuparse exactamente cuando puede.
  • Ahorre un pensamiento para el pobre muchacho (quizás usted) que tiene que leer y mantener el código dentro de unos años.
  • Hazlo simple.
  • Usa tu cerebro.
4

También he escrito algunos consejos para una buena codificación en C++: http://www.ivanism.com/Articles/CodingStandards.html

El mensaje comienza con:

El objetivo de la codificación de las normas son incrementar el valor de negocio del código. La forma más obvia (y de hecho la más importante) de hacer esto es hacer que el código sea robusto y tenga un defecto bajo. Igualmente importante, pero los objetivos más sutiles incluyen reducir la fricción del codificador y la facilidad de mantenimiento. Como tal, los estándares deben mantenerse mínimos, lo suficientemente simples como para seguirlos y lo suficientemente importantes como para recordarlos.

Estos estándares se deben usar al compilar nuevos archivos fuente. Cuando un archivo existente necesita ser cambiado, ese es un momento apropiado para llevarlo al nivel estándar. Sin embargo, nunca es un buen momento para editar un archivo simplemente para llevarlo al nivel estándar. Si no está roto, no lo "arregle" y recuerde siempre "Mantenerlo funcionando".

Se dará cuenta de que no me referiré a los puntos clásicos "religiosos":

tabs vs. spaces 
indentation style 
curly brace style 
etc... 

consistencia dentro de un archivo es importante y mejora la legibilidad. Pero permitir que los codificadores se expresen también es importante. Por lo tanto, si edita un archivo, sea conforme a la religión de ese archivo o convierta el archivo completo a un formato nuevo y consistente. Si convierte el archivo completo, de hecho se está apropiando de él, así que prepárese para ser la persona indicada o déjelo como está.

0

En cuanto a la pregunta lateral, lo que necesita es una herramienta de análisis estático . Una herramienta costosa y enorme es Klocwork. Lo he usado en un par de tiendas y se puede configurar para emitir advertencias contra problemas de estilo. No lo recomiendo para usuarios individuales; es más para un entorno corporativo. Aunque pueden haber eliminado versiones para individuos.

Recuerde buscar en Google herramientas de análisis estático.

3

Otras respuestas indican que no hay una guía de estilo oficial, que era cierta en ese momento.

Pero en 2015, Bjarne Stroustrup announced the C++ Core Guidelines, un proyecto de código abierto para construir directrices autorizadas para C moderna ++ código, encabezados por el propio BS y publicadas por la Fundación Standard C++:

http://github.com/isocpp/CppCoreGuidelines

En relevancia a este pregunta, las Directrices básicas también link to other guidelines, con comentarios adicionales. Acerca de la Guía de estilo de Google C++ frecuentemente recomendada, dicen:

Diseñado para C++ 03 y (también) bases de código más antiguas. Los expertos de Google ahora están colaborando activamente para ayudar a mejorar estas Directrices y, con suerte, fusionar esfuerzos para que estos puedan ser un conjunto común moderno que también podrían recomendar.

Cuestiones relacionadas