🦀 ClawHub
C++/CPP Code Style
by @daxiali
C++/CPP代码都用这个coding style, code style, 代码风格,写代码之前阅读下面规则
TERMINAL
clawhub install cpp-code-style📖 About This Skill
name: C++/CPP Code Style description: C++/CPP代码都用这个coding style, code style, 代码风格,写代码之前阅读下面规则 metadata: {"clawdbot":{"emoji":"⚡","requires":{"bins":["g++", "gcc"]},"os":["linux","darwin","win32"]}}
Google C++ Style Guide
写代码严格按照下面规则。 注意:external,3rdparty,.gitignore里面的文件都不在该规则范围内。
关键规则
1. 命名规范
snake_case.hpp, snake_case.cppCamelCasecamelCase(小驼峰,首字母小写)snake_casem_camelCase(m_前缀 + 小驼峰),不要m_camelCase_kCamelCase(全局常量用 g_CamelCase)snake_case2. 缩进和格式
class Foo : public Bar {
public:
void Method() {
if (condition) {
DoSomething();
}
}
};
3. 空格
// 正确
int* ptr;
int& ref;
void Func(int param1, int param2) { ... }// 类成员变量
class MyClass {
public:
void myMethod() {
m_counter = 0; // m_ 前缀
int local_var = 0; // 局部变量用 snake_case
}
private:
int m_counter; // 成员变量 m_ + camelCase
};
// 错误
int *ptr;
int &ref;
void Func( int param1, int param2 ) { ... }
class MyClass {
int counter; // 缺少 m_ 前缀
};
4. 头文件保护
#pragma once
// 或者
#ifndef _FILE_NAME_H_
#define _FILE_NAME_H_// ... code ...
#endif // _FILE_NAME_H_
5. 命名空间
using namespace 污染全局命名空间namespace foo { 和 } // namespace foo 的格式namespace 声明后跟一对空大括号namespace litho {
namespace geo {class Point { ... };
} // namespace geo
} // namespace litho
6. 注释
// 单行注释/* */ 多行注释(仅当需要块注释时)/** ... */ 格式// 单行注释/*
* 多行注释
*/
/**
* 函数描述
* @param x 参数描述
* @return 返回值描述
*/
7. 其他重要规则
private: 之前声明公有的virtual,在定义中不使用 virtual 关键字constexpr 而不是 const// NOLINT 关闭特定的 lint 警告(如果需要)工具
clang-format
项目已配置 .clang-format 文件,使用 Google 风格。
检查.clang-format 文件是否符合上述规则,不符合修改.clang-format 文件。
格式化文件:
clang-format -i src/geo/*.hpp tests/*.cpp