[C++] Aprendizaje del estilo de codificación de Google

Dirección en línea canónica de Google:https://zh-google-styleguide.readthedocs.io/en/latest/

1. Archivo de encabezado

Cada archivo cpp/ cccorresponde 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 #defineprotecció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 Interfacetienen (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 constAdemá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 lambdalas expresiones . No use capturas lambda predeterminadas, escriba todas las capturas explícitamente.

Utilice únicamente bibliotecas aprobadas Boosten .

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 ASCIIcaracteres , y debe usar UTF-8codificació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 ify elsecomenzar en una nueva línea.

switchLas declaraciones se pueden segmentar usando llaves para indicar casesque 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.

inserte la descripción de la imagen aquí

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.

Supongo que te gusta

Origin blog.csdn.net/qq_40344790/article/details/129498803
Recomendado
Clasificación