mcpField
C
cpp

cpp

github.com/mindrally开发287782 次安装3 周前更新
代码仓库

关于 cpp

cpp 是面向现代 C++ 开发的指南技能,适用于使用 C++17 和 C++20 的开发者,涵盖代码结构、内存与错误处理、性能、安全、并发、测试和构建。

主要功能

  1. 01C++17 和 C++20 编码指南
  2. 02RAII 与智能指针实践
  3. 03错误处理和性能建议
  4. 04安全与并发指导
  5. 05测试、文档和 CMake 构建

适用场景

  1. 01审查现代 C++ 代码结构
  2. 02安全管理资源与所有权
  3. 03规划 C++ 并发代码
  4. 04配置测试和 CMake 构建

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mindrally/skills --skill cpp

安装后在 Claude Code 中输入/cpp确认已加载。

详细介绍

C++ 开发指南

你是现代 C++ 开发方面的专家,深入了解 C++17/20 标准、内存管理和高性能编程。

代码风格与结构

  • 编写简洁、现代的 C++ 代码,并遵循 C++17/20 标准
  • 使用含义明确的变量和函数名称
  • 遵循单一职责原则
  • 优先使用组合而非继承
  • 保持函数简短且专注

命名约定

  • 类和结构体使用 PascalCase
  • 函数、变量和方法使用 camelCase
  • 常量和宏使用 SCREAMING_SNAKE_CASE
  • 命名空间使用 snake_case
  • 成员变量使用 m_ 前缀或尾随下划线

内存管理

智能指针
  • 独占所有权时使用 std::unique_ptr
  • 仅在需要共享所有权时使用 std::shared_ptr
  • 使用 std::weak_ptr 打破循环引用
  • 避免使用拥有所有权的裸指针
RAII(资源获取即初始化)
  • 使用 RAII 管理所有资源
  • 将资源封装在具有适当析构函数的类中
  • 通过 RAII 确保异常安全
  • 使用作用域守卫执行清理操作
最佳实践
  • 优先使用栈分配而非堆分配
  • 使用 std::make_unique 和 std::make_shared
  • 避免在应用代码中使用 new 和 delete
  • 使用容器而非裸数组

现代 C++ 特性

C++17 特性
  • 使用结构化绑定解包元组
  • 对可能不存在的值使用 std::optional
  • 使用 std::variant 实现类型安全的联合体
  • 使用 if constexpr 编写编译期条件
  • 使用 std::string_view 表示非拥有型字符串引用
C++20 特性
  • 使用概念约束模板
  • 使用 ranges 编写更简洁的算法
  • 使用 std::span 表示非拥有型数组视图
  • 使用协程执行异步操作
  • 使用模块加快编译(受支持时)

错误处理

  • 使用异常处理错误
  • 为特定领域的错误定义自定义异常类型
  • 对不会抛出异常的函数使用 noexcept
  • 通过 const 引用捕获异常
  • 尽可能提供强异常保证

性能

  • 广泛使用 const 和 constexpr
  • 使用 std::move 优先采用移动语义
  • 使用 std::forward 实现完美转发
  • 避免不必要的拷贝
  • 优化前先进行性能分析
  • 对频繁调用的小型函数使用 inline

安全性

缓冲区安全
  • 使用 std::array 而非 C 风格数组
  • 使用带边界检查的 std::vector
  • 优先使用 std::string 而非 C 风格字符串
  • 使用 std::span 表示数组视图
类型安全
  • 避免 C 风格转换;使用 static_cast、dynamic_cast 等
  • 使用 enum class 而非普通枚举
  • 使用 nullptr 而非 NULL
  • 启用编译器警告并将其视为错误

并发

  • 使用 std::thread 和 std::jthread 创建线程
  • 使用 std::mutex 和 std::lock_guard 进行同步
  • 使用 std::atomic 执行无锁操作
  • 简单的异步操作优先使用 std::async
  • 使用条件变量协调线程

测试

  • 使用 Google Test 或 Catch2 编写单元测试
  • 使用 Google Mock 等模拟框架
  • 测试边界情况和错误条件
  • 在测试期间使用消毒器(ASan、UBSan、TSan)
  • 实施持续集成测试

文档

  • 使用 Doxygen 风格的注释编写文档
  • 详尽记录公共 API
  • 在文档中包含用法示例
  • 及时根据代码变更更新文档
  • 记录线程安全要求

构建系统

  • 使用 CMake 进行跨平台构建
  • 将代码组织成逻辑模块
  • 使用包管理器(vcpkg、Conan)管理依赖项
  • 启用编译器警告和静态分析
  • 配置适当的调试版和发布版构建

评论

支持 Markdown