← 返回
未分类

C++/CPP Code Style

C++/CPP代码都用这个coding style, code style, 代码风格,写代码之前阅读下面规则
C++/CPP 代码均遵循此代码风格,编写代码前请阅读以下规则。
daxiali daxiali 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 485
下载
💾 0
安装
1
版本
#latest

概述

Google C++ Style Guide

写代码严格按照下面规则。

注意:external,3rdparty,.gitignore里面的文件都不在该规则范围内。

关键规则

1. 命名规范

  • 文件名: snake_case.hpp, snake_case.cpp
  • 类名: CamelCase
  • 函数名: camelCase(小驼峰,首字母小写)
  • 变量名: snake_case
  • 类成员变量: m_camelCase(m_前缀 + 小驼峰),不要m_camelCase_
  • 常量: kCamelCase(全局常量用 g_CamelCase
  • 命名空间: snake_case

2. 缩进和格式

  • 缩进: 2 个空格,不使用 Tab
  • 行宽: 80 字符(软限制)
  • 大括号: 函数和类的开始大括号在新行,控制流语句的大括号在同一行
  • 行尾空格: 去掉行尾空格
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 警告(如果需要)
  • CMakefile:不要用绝对路径和中文注释
  • CopyRight: 使用当前年份,如2026
  • template: template在class和function上一行
  • 类成员变量: 需要初始化
  • include顺序:标准库 → 第三方库 → 项目头文件

工具

clang-format

项目已配置 .clang-format 文件,使用 Google 风格。

检查.clang-format 文件是否符合上述规则,不符合修改.clang-format 文件。

格式化文件:

clang-format -i src/geo/*.hpp tests/*.cpp

参考

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-03 11:17 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 681 📥 329,833
dev-programming

CodeConductor.ai

larsonreever
AI驱动平台,提供快速全栈开发、智能体、工作流自动化及低代码AI集成的可扩展产品创建。
★ 78 📥 182,590
dev-programming

YouTube

byungkyu
使用托管OAuth集成YouTube Data API,支持搜索视频、管理播放列表、获取频道数据及评论互动,适用于用户需要时使用此技能。
★ 142 📥 41,937