[advanced c++] Professional coding 02 - 书写格式
旧风格之漏洞百出
命名法等书写格式,将遵循Google风格,详见以上链接。
以下的”旧内容“将仅供参考。
(1) 骆驼式命名法(Camel-Case)
函数这个看上去不是很适应。
至于整数,可以多一些通用的扩展:idx/index, row/height, col/weight 等。
double类型:dwXXXX
(2) 匈牙利命名法 补充
[ 属性+类型+描述 ]
Prefix | Comment |
g_ | 全局变量 |
m_ | 类成员变量 |
s_ | 静态变量 |
c_ | 常量 |
(3) Coding Style
This is the summary of experiences during development.
Type
|
Prefix
|
Example
|
---|---|---|
int | i | iNum, iCnt, iRst, idxCol, idxRow, |
float | f | fWeight, fLen, |
double | d | dSize |
string | s | sName, sPath, sFileName, sFolderName |
stringstream | ss | ssName, ssPath |
array | a | aItems, aPathList |
bool | b | bIsComplete |
function | fn | fnHandler |
object | o | oHost |
pointer | p | pMem |
global | g_ | g_bIsComplete |
static | s_ | s_aItems |
const | c_ | c_sPath |
debug | debug_ | debug_totalTime |
mat | Img | grayImg (RGB is default), graySmoothedImg, graySmoothedCannyImg |
roi | roi | roiReminderImg |
orientation | _<xxx> | g_roiDetection_bottom, g_roiDetection_left |
color channel | <r/g/b>ch | rchImg, gchImg, bchImg |
result | _rst, _result | grayGridbox_rst, knnGrayImg_rst, knnGrayImg_result |
Google规范风格
- 7. 命名约定
- 7.1. 通用命名规则
- 7.2. 文件命名【文件名要全部小写, 可以包含下划线;.cc, .h, .inc】
- 7.3. 类型命名【类名还是首字母大写非下划线比较好】
- 7.4. 变量命名
- 7.5. 常量命名【使用k,const int kDaysInAWeek = 7;】
- 7.6. 函数命名【驼峰即可】
- 7.7. 命名空间命名
- 7.8. 枚举命名【遵循常量风格】
- 7.9. 宏命名【全部大写,一般不同】
- 7.10. 命名规则的特例
- 译者(acgtyrant)笔记
/* 如果有问题则补充 */
/* 如果有问题则补充 */
- 9. 格式
- 9.1. 行长度【每一行代码字符数不超过 80】
- 9.2. 非 ASCII 字符
- 9.3. 空格还是制表位【只使用空格, 每次缩进 2 个空格】
- 9.4. 函数声明与定义【参数的对齐,如果一行放不下】
- 9.5. Lambda 表达式
- 9.6. 函数调用
- 9.7. 列表初始化格式
- 9.8. 条件语句
- 9.9. 循环和开关选择语句
- 9.10. 指针和引用表达式
- 9.11. 布尔表达式
- 9.12. 函数返回值
- 9.13. 变量及数组初始化
- 9.14. 预处理指令
- 9.15. 类格式【
public:
,protected:
,private:
, 每个都缩进 1 个空格】 - 9.16. 构造函数初始值列表
- 9.17. 命名空间格式化【命名空间内容不缩进】
- 9.19. 水平留白
- 9.19. 垂直留白
- 译者 (YuleFox) 笔记
- 译者(acgtyrant)笔记
/* 如果有问题则补充 */
constexpr的好处:
- 是一种很强的约束,更好地保证程序的正确语义不被破坏。
- 编译器可以在编译期对constexpr的代码进行非常大的优化,比如将用到的constexpr表达式都直接替换成最终结果等。
- 相比宏来说,没有额外的开销,但更安全可靠。
VSCode 插件
Ref: 自己使用过比较好用的VSCode插件
C/C++ [ms-vscode.cpptolls] 智能推导,调试和代码浏览
C/C++ Clang Command Adapter [mitaki28.vscode-clang] 使用Clang的命令来分析C/C++/Object-C的代码诊断,还有代码补全。
C/C++ Snippets [hars.cppsnippets] 有用的C/C++代码片断,节省时间
C++ Algorithm Mnemonics [davidbroetje.algorithm-mnemonics-vscode] 写C++不可能不接触STL,这个插件能让你使用STL算法更有生产力
cppcheck [matthewferreira.cppcheck] 这个插件帮你方便的调用cppcheck这款C++静态分析软件的命令来检查你的C++代码隐患,包括越界,资源泄漏等
CTags Support[jaydenlin.ctags-support] 先要安装ctags,然后就可以查函数等符号的定义了,但是不能查引用,支持语言很多,不用担心。
Clang-Format [xaver.clang-format] 把你的C,C++ Java js等代码格式化为Clang的代码风格
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律