个人编程规范
一.命名约定
g 开头表示 全局变量----gValue
t 开头表示 局部变量----tValue
f 开头表示 函数参数----fValue
m 开头表示 成员变量----mValue
s 开头表示 静态变量----sValue
C开头表示类名 CClassName{}
二.格式
1.空格
参数逗号/分号后面加一个空格
赋值(=)或等于(== > < >= <=)等双目运算符 两边都加一个空格
for和if加一个空格再括号
注释后面加一个空格
2.注释格式
头文件注释:
/** * 函数介绍(适用于多行) * @param 参数名 参数介绍 */
源文件注释:
////////////////////////////////////// // 函数介绍(适用于单行) // // 函数步骤介绍(适用于多行) //
3.大小写
函数首字母先小写再大写
4.习惯
大括号要另起一行.虽然紧跟着函数可以缩小一行,但是在大括号对齐上面会比较好找,特别是多个嵌套大括号的时候
1 2 3 4 | void A() { ... } |
5.声明
同一个数据类型的多个变量可以同时声明
1 | int a = 1, b = 2; |
三.头文件规范
//Example.h #ifndef _EXAMPLE_H_ #define _EXAMPLE_H_ //类名C开头 Class CTest{ //只能公有函数便于外部调用 public: CTest(); //初始化类内的所有成员变量 ~CTest(); //对象由系统回收内存,指针需要我们释放 _In_ Init(); //可能需要多次初始化 Destory(); //可能需要多次释放 _Out_ HRESULT OnCall(_In_ testData); //函数名全大写,用HRESULT进行错误检验 inline HRESULT Count(){ //对于少行计算函数直接用内联,减少.cpp的代码量和阅读量 } //只有私有变量便于封装 private: //该类使用的值 /*常量全部用大写字母并用下划线分割*/ /*静态变量加前缀s_*/ /*全局变量加前缀g_*/ /*类成员变量加前缀m_小写大写*/ _In_ m_testData; _Out_ m_testData; }; #endif //_EXAMPLE_H_ //.hpp的头文件用来实现工具类代码,这样就能减少.cpp的代码量
四.Cpp规范
//Example.cpp #include "Example.h" #include <assert.h> #include <cassert> HRESULT CTest::Call(_In_ testData){ //布尔值不要与零值等进行比较 assert(testData); //对输入值进行检验 return S_OK; } //对于逻辑函数和业务函数要区分开,因为逻辑函数用来控制流程,业务代码需要大量计算 //逻辑函数没有返回值 void CTest::逻辑函数(){ } //业务函数需要返回值验证 HRESULT CTest::业务函数(){ HRESULT hr; if(SUCCEEDED(hr)){ //如果成功 } if(FAILED(hr)){ //如果失败 } return S_OK; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)