C/C++编码规范
来源:互联网 发布:acs数据库 编辑:程序博客网 时间:2024/05/15 09:38
近日阅读《程序设计导引及在线实践》一书,书中有“C/C++编码规范"一节, 阅之,觉得正是自己需要提高的地方,而且觉得这些规范不仅仅对C/C++适用,故摘录于下,望自己谨记于心,付诸实践。
“
一个好的程序,不仅要算法正确,效率高,而且还应该可读性好。所谓程序的可读性,就是程序是否能让人容易读懂。在开发实践中,很多情况下可读性与代码效率同等重要。
如何提高程序的可读性呢?在标识符命名,书写格式,注释三个方面加以注意,再养成一些好的习惯,就能够有效增强程序的可读性。
1.标识符命名注意事项
好的命名方法使标识符易于记忆且使程序的可读性大大提高。
对标识符命名的基本要求是,看到标识符就能想起或猜出它是做什么用的标识符命名应注意以下几点:
(1)标识符号应能提供足够信息以说明其用途。一定不要怕麻烦而懒得起足够长的变量名,少按下几个键省下的时间,和日后自己读该程序或者别人读你的程序时揣摩该变量的作用所花的时间相比,实在微不足道。
(2)为全局变量取长的,描述信息多的名字,为局部变量取稍短的名字。
(3)名字太长时可以适当采用单词的缩写。但要注意缩写方式要一致,要缩写就全都缩写。
(4)注意使用单词的复数形式。
(5)对于返回值为真或假的函数,加"Is"前缀,如:
int IsCanceled();
int isalpha(); //C语言标准库函数
BOOL IsButtonPushed();
2.程序的书写格式
(1)正确地使用缩进:首先,一定要有缩进,否则代码的层次不明显。缩进应为4个空格较好。需要缩进时一律按Tab键,或一律按空格键,不要有时用Tab键缩进,有时用空格键缩进。一般开发环境都能设置一个Tab键相当于多少个空格键,此时就都用Tab键。
(2)行宽与折行:一行不要太长,不能超过显示区域,以免阅读不便。太长则应折行,折行最好发生在运算符前面,不要发生在运算符后面。
(3)'{' , '}'位置不可随意放置。建议将'{'放在一行的右边,而将'}'单独放置一行,这样既不影响可读性,又能节省一行。
但是对于函数体或结构定义的第一个'{',还是单独一行更为清晰。
(4)变量和运算符之间最好加1个空格。
3.注释的写法
在工程实践中,文件开头,全局变量定义处,以及函数开头都应该有注释。
文件开头的注释模板如下:
/************************************************
**文件名:
**Copyright(c) 1998-1999 *********公司技术开发部
**创建人:
**日 期:
**修改人:
**日 期:
**描 述:
**
**版本:
**-----------------------------------------------
************************************************/
函数开头的注释模板如下:
/***********************************************
**函数名:
**输 入:a,b,c
** a---
** b---
** c---
**输 出:x---
** x为1,表示...
** x为0,表示...
**功能描述:
**用到的全局变量:
**调用模块:
**作 者:
**日 期:
**修 改:
**日 期:
**版 本:
**********************************************/
4.一些好的编程习惯
(1)尽量不用立即数,而用#define定义成常量,以便以后修改。例如:
#define MAX_STUDENTS 20
struct SStudent aStudent[MAX_STUDENTS];
比
struct SStudent aStudent[20]
好
(2)使用sizeof(),不直接使用变量所占字节数的数值。
(3)稍复杂的表达式中要积极使用括号,以免优先级理解上的混乱以及二义性。
n = k++ + j; //不好
n = (k++) + j; //好一点
(4)不很容易理解的表达式应分几行写。如:
n = (k++) + j;
应该写成:
n = k + j;
k++;
(5)嵌套的 if else 语句要多使用{}。
(6)单个函数的程序行数最好不要超过100行(两个屏幕高)。
(7)尽量使用标准库函数。
(8)不要随意定义全局变量,尽量使用局部变量。
(9)保持注释和代码完全一致,改了代码别忘改注释。
(10)循环,分支层次最好不要超过5层。
(11)注释可以与语句在同一行,也可以在上行。
(12)一目了然的语句不加注释。
”
附:选择排序 算法 C语言实现---
上述实现由于交换次数比较多,效率不高,可改为:
- C语言编码规范
- C/C++ 编码规范
- C#编码规范
- C#编码规范
- C/C++编码规范
- C编码规范
- C编码规范
- C/C++编码规范
- C/C++编码规范
- C/C++编码规范
- C语言编码规范
- C语言编码规范
- C语言编码规范
- objective-c 编码规范
- C/C++编码规范
- C语言编码规范
- c语言编码规范
- Objective-C 编码规范
- SPI设备的驱动
- codeigniter 中 smtp发邮件
- Powershell工具&资源
- asp.net常用的正则表达式
- asp.net发送电子邮件的实现(通过一个邮箱向另一个邮箱发送)
- C/C++编码规范
- 解决Excel上传莫名的空格,空行
- 转贴一篇很不错的有关ASP.NET Session的分析文章
- HTC EVO 4G升级2.2 终于支持Flash了!
- delete类的对象错误。。。
- C/C++/C# 程序库
- eclipse.ini各个参数的含义
- poj 1201(差分约束系统,bellman)
- Ring 0 ~ 3