个人C/C++编码规范______仅供个人参考使用
来源:互联网 发布:mac地址可以重复么 编辑:程序博客网 时间:2024/05/16 17:38
本文件主要包含对C/C++文件的版式、注释、表示命名符、可读性、变量、结构、函数和过程方面作出的基本编写原则、规则,以实现C/C++代码的可读性和易维护性。
1 注释
1.1 源文件头部应进行注释,列出:文件名、作者、创建日期、修改日期、函数功能、迭代版本等
1.2 函数头部应进行注释,列出:函数的目的/功能、输出/输出参数、返回值等
1.3 注释应该和代码同时更新
1.4 注释的内容要清晰、明了,不能有二义性
1.5 避免在注释之中使用非常用的缩写或者术语
1.6 注释应注明为什么做,而不是注明正在做什么
1.7 注释的版式应和其描述代码一致,进行相同的缩排
1.8 有实体意义的变量和常量、数据结构声明等,若其命名还不构充分表达其作用,则必须加以注释
1.9 重要变量的定义应该有较为详细的注释,包括其功能、取值范围、存取注意事项等
1.10 分支语句(条件分支、循环语句等)应进行注释
1.11 注释应适宜,有效注释量控制在20%~30%之间
2 程序版式
2.1 程序块需采用缩进风格编写,缩进空格数为4,尽量不用TAB键
2.2 相对独立的程序块之间、变量说明之后必须加空格或用空行分开,函数之间用空行分开
2.3 较长的语句要分为多行书写
2.4 不能将多个短语句写在同一行之中,即一行只写一条语句
2.5 if、for、do、while、case、switch、default等语句各自占一行,切if、for、do、while等语句的执行语句部分无论多少都要加{}
2.6 代码行之内应留有适当的空格,关键字后必须加空格,函数名后不要留空格, 如 Func(x)。如果不是一行的结束符号, 其后也要留空格,二元操作符前后加空格,一元操作符前后不加空格
2.7 程序块的分界符应各占一行并且位于同一列
3 标识符命名
3.1 命名应尽量使用英文单词,避免使用引起误解或意思模糊的缩写
3.2 命名规范必须与使用的系统风格一致,并且同一项目应该统一格式
3.3 C语言变量命名使用TypePrefix+Name,C++用m_xxxx表示类的成员变量,用g_xxxx表示全局变量
3.4 常量、宏和模板名采用全大写字母,每个单词之间用下划线“_”分隔
3.5 命名中若使用了特殊约定或缩写,应在源文件开始处注明
3.6 变量命名禁止取单个字符,但做局部循环变量可以
3.7 函数名以大写开头,采用动-名结构,反映函数执行的操作和返回类型
3.8 类、结构、联合、枚举的命名分别以C、S、U、E开头
4 可读性
4.1 用括号明确表达式的操作顺序,避免使用默认优先级
4.2 建议不要编写过于复杂、多用途的复合表达式
4.3 涉及物理状态或含有物理意义的常量,应用有意义的枚举或常量来代替
4.4 禁止使用难以理解,易产生歧义的语句
5 变量、结构
5.1 建议少用全局变量,尽量去掉无必要的公共变量
5.2 变量被创建后应及时初始化
5.3 尽量减少数据类型转换
6 函数、过程
6.1 调用函数要检查所有的可能的返回情况,不应该的返回情况使用ASSERT来确认
6.2 函数规模尽量限制在100行以内
6.3 建议一个函数仅完成一个功能
6.4 类的构造函数,拷贝构造函数、析构函数和赋值函数应尽量自己写明,而不是使用系统内缺省的
6.5 谨慎使用与系统环境有密切关系的系统函数
7 程序效率及质量保证
7.1 在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率
7.2 循环体内的工作量应该最小化
7.3 模块中函数的划分和组织方式应进行分析、优化,提高程序效率
7.4 避免循环体内含有判断语句
7.5 尽量使用标准库函数
7.6 只引用属于自己的命名空间(C++)
7.7 函数/过程中动态分配的资源,在函数/过程退出之前要释放
7.8 对指针的操作应小心翼翼
7.9 尽量少用goto语句
附:代码样例:http://blog.csdn.net/qq_30176699/article/details/61654019(非完全遵循此文档)
- 个人C/C++编码规范______仅供个人参考使用
- 文件上传(仅供个人参考)
- hadoop个人笔记,仅供自己参考
- HOWTO-Ocsp-Unid-client(水平有限,仅供个人参考)
- enum枚举的试用笔记 (仅供个人参考)
- 字节对齐(c/c++) (仅供学习参考)
- 个人总结的一些C/C++编码规范
- 个人总结的一些C/C++编码规范
- 个人总结的一些C/C++编码规范
- 关于Android的一些收集,仅供个人使用。
- MyEclipse8.6注册机,仅供于个人学习使用
- 21天学会c++(英汉对照,个人翻译,水平有限,供参考)-------第2天
- C++primer温习要点识记(仅适合个人,可做参考)(一)
- 我的职业测评结果(仅供我个人参考)
- fl2440 开发板环境配置(仅供个人参考,记忆力不好)
- 开始学习Matlab,一点一滴记录自己的所学 仅供个人参考Matlab(1)
- 开发过程中莫名异常排错(仅供个人参考)
- 个人编码规范
- 蓝桥杯——算法提高 大数加法&大数乘法&冒泡排序
- Vulkan编程指南翻译 第七章 图形管线 第1节 逻辑图形管线
- 事物
- bootstrap-table父子表,可无线循环
- Linux下Tinyxml编译为静态库
- 个人C/C++编码规范______仅供个人参考使用
- nodeJs学习(1)
- DAX-PowerBI系列
- 第二篇
- The improvement of IPC——(1)pipe
- mmap/shm_open 映射进程间共享文件
- CentOS7使用firewalld打开关闭防火墙与端口
- js.childNodes如何兼容
- 网络协议 阅读笔记