原文為空白模板,本文依業界公認最佳實踐(Google C++ Style Guide、C++ Core Guidelines、MISRA C++、Effective C++ 系列)重構核心指南,供團隊直接採納或客製化。
| 項目 | 規範 | 範例 |
|---|---|---|
| 標頭檔副檔名 | .h / .hpp | widget.h |
| 實作檔副檔名 | .cpp / .cc | widget.cpp |
| 檔案命名 | 小寫底線 / PascalCase | network_utils.h / NetworkUtils.h |
| 防重複包含 | #pragma once (優先) 或宏守衛 | #pragma once |
| 包含順序 | 系統 → 第三方 → 專案內部 → 對應 .h | #include |
| 實體 | 風格 | 範例 |
|---|---|---|
| 類別/結構/列舉/特質 | PascalCase | class HttpClient; enum class Color; |
| 函數/方法 | snake_case / PascalCase | void process_data(); void ProcessData(); |
| 變數/參數/資料成員 | snake_case + 尾底線(成員) | int max_count; int buffer_size_; |
| 常數/編譯期常數 | kPascalCase / UPPER_SNAKE | constexpr int kMaxSize = 1024; |
| 巨集 | UPPER_SNAKE | #define MY_LIB_VERSION 1 |
| 命名空間 | lower_case | namespace my_project {} |
std::make_unique、std::make_shared、std::vectorT*、gsl::not_null、std::span&&std::lock_guard/scoped_lock 保護最小臨界區std::lock 多重鎖std::atomic、memory_orderauto 配合尾端返回型別、結構化綁定constexpr 取代宏、編譯期計算std::optional 替代 nullptr/哨兵值std::variant 替代 union/型別碼std::string_view 替代 const string& 參數modules (C++20) 取代標頭檔包含concepts 限制模板參數/// @brief ... @param ... @return ...// Why: ... 解釋意圖,非重複代碼clang-format 統一風格clang-tidy、cppcheck、PVS-Studio-Wall -Wextra -Wpedantic -Werror (CI 強制)高品質 C/C++ 代碼的核心是:**嚴謹的資源管理 (RAII)、清晰的所有權語義、現代語法糖簡化邏輯、自動化工具守護品質**。本指南為基礎骨架,團隊應根據專案屬性(嵌入式/雲服務/遊戲/科學計算)裁剪擴充,並納入程式碼審查 (Code Review) 文化,持續演進。