Dirección en línea canónica de Google:
https://zh-google-styleguide.readthedocs.io/en/latest/
Directorio de artículos
1. Archivo de encabezado
Cada archivo cpp
/ cc
corresponde a un archivo de encabezado h, excepto el código de prueba de unidad y main()
los archivos de solo inclusión.
Todos los archivos de encabezado deben tener #define
protección para evitar que los archivos de encabezado se incluyan varias veces, el formato de nombre: <PROJECT>_<PATH>_<FILE>_H_
, como:
#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_
...
#endif // FOO_BAR_BAZ_H_
Cuando una función se declara como una función en línea, el compilador la expandirá en línea en lugar de llamarla de acuerdo con el mecanismo de llamada de función habitual. (Nota: solo defina funciones como funciones en línea si tienen 10 líneas o menos)
Utilice el orden de inclusión estándar de los archivos de encabezado para mejorar la legibilidad y evitar dependencias ocultas, de la siguiente manera: 相关头文件, C 库, C++ 库,其他库的.h,本项目内的.h
.
2. Alcance
El espacio de nombres subdivide el ámbito global en ámbitos independientes con nombre, lo que puede evitar eficazmente los conflictos de nombres en el ámbito global. Además, el nombre del espacio de nombres generalmente se comenta al final del espacio de nombres.
3. clase
Una clase es la unidad básica de código en C++.
Se pueden realizar varias operaciones de inicialización en el constructor.
Solo se usa cuando solo hay miembros de datos struct
, se usan todos los demás class
.
Las interfaces son clases que cumplen ciertas condiciones y Interface
tienen (no obligatorio).
4. Funciones
Las funciones tienden a regresar por valor cuando se usan y, de lo contrario, regresan por referencia. Evite devolver un puntero a menos que sea anulable.
Es mejor que la función sea breve y concisa para evitar la larga cola.
Todos los parámetros pasados por referencia deben agregarse const
.
Si desea utilizar la sobrecarga de funciones, debe permitir que el lector vea el punto de llamada con confianza, sin tener que adivinar qué función sobrecargada debe llamar. Esta regla también se aplica a los constructores.
5. Otras funciones de C++
Las excepciones de C++ están prohibidas.
Utilice conversiones de tipo C++, por ejemplo static_cast<>()
, . No utilice conversiones int y = (int)x 或 int y = int(x)
como .
Se recomienda enfáticamente que lo use siempre que sea posible const
Además, a veces es mejor usar constexpr introducido por C++ 11 en su lugar.
C++ no especifica el tamaño de un entero. Por lo general, las personas asumen que short es de 16 bits, int de 32 bits, long de 32 bits y long long de 64 bits.
Usa lambda
las expresiones . No use capturas lambda predeterminadas, escriba todas las capturas explícitamente.
Utilice únicamente bibliotecas aprobadas Boost
en .
6. Convenciones de nombres
La denominación de funciones, la denominación de variables y la denominación de archivos deben ser descriptivas, y las abreviaturas deben usarse menos.
El nombre del archivo debe estar todo en minúsculas y puede contener guiones bajos (_)
o guiones (-)
De acuerdo con el acuerdo del proyecto, si no hay acuerdo, entonces "" es mejor.
7. Notas
Use //
o /**/
, y unificar está bien.
Los comentarios en la declaración de la función describen la funcionalidad de la función y los comentarios en la definición describen la implementación de la función.
函数的输入输出。
对类成员函数而言: 函数调用期间对象是否需要保持引用参数, 是否会释放这些参数。
函数是否分配了必须由调用者释放的空间。
参数是否可以为空指针。
是否存在函数使用上的性能隐患。
如果函数是可重入的, 其同步前提是什么?
Por lo general, el nombre de la variable en sí mismo es lo suficientemente bueno para explicar el propósito de la variable. En algunos casos, también se requieren anotaciones adicionales.
8. Formato
El número de caracteres en cada línea de código no supera los 80.
Trate de no usar ASCII
caracteres , y debe usar UTF-8
codificación cuando los use.
Use solo espacios, sangría 2 espacios a la vez.
Prefiere no usar espacios entre paréntesis, y las palabras clave if
y else
comenzar en una nueva línea.
switch
Las declaraciones se pueden segmentar usando llaves para indicar cases
que no están conectadas entre sí. En bucles de una sola declaración, los paréntesis pueden usarse o no. Un cuerpo de ciclo vacío debe usar {} o continue
.
Finalmente, tenga en cuenta que el estilo de código general del proyecto debe ser lo más consistente posible, para que pueda concentrarse en el contenido en lugar de la forma.
eso es todo.