C编程规范Made by Edward.xu
序:此系列规范综合依据本人C/C++语言和JAVA语言的书写习惯以及参考其他规范所总结,不足之处还请见谅。
北京理工大学珠海学院 徐方鑫
E-mail:280599580@qq.com
第一章:说明性文件
1.程序说明性文件
/*****************************************************
Copyright (c/c++), 2010~2011, zhbit, Edward.xu ,ltd,
First name://文件名
Author: Version: Data: //作者,版本,完成日期
Description://程序具体功能描述
Others://其他备注
Function list://封装函数列表
******************************************************/
2.封装函数说明性文件
/******************************************************
Function name://函数名称
Argument://参数列表(名字,类型)
Output://输出(名字,类型)
Function://函数功能说明
******************************************************/
3.调试说明性文件
/******************************************************
Debug data://调试时间
Bug://故障描述
Exclude://故障处理描述
*******************************************************/
第二章:命名约定
1.常量命名
常量的每个单词均大写,单词直接使用下划线连接
etc: #define MAX_VALUE value
const int MAX_VALUE = value;
2.变量命名
(1)变量名中第一个单词小写,其后的每个单词的第一个字母大写
etc: Int dayName;
(2)用名词命名变量,使变量名能够做到见名识意,必要时允许使用简称
etc: char addess;
char addr;
(3)数据变量需要赋初值,当无确定初始值时赋0
etc: int addess=0;
3.方法命名(函数命名)
(1)方法名中第一个字母大写,其后全部小写
etc: Int Ture( void );
(2)参数必须写明,而且全部小写,局部变量命名以_in为结尾
Int Read( int x_in , int y_in );
4.类命名
(1)类名中第一个字母大写,其后每个单词的第一个字母大写
etc: public class PrintStream{}
(2)用名词命名类
public class HelloWorld{}
5.全局变量命名
全局变量无论命名为何,结尾以_all为结尾
etc: ( extend ) int x_all;
第三章:注释约定
1. 单行注释
代码后隔一空格进行注释
etc: Int sum; //sum is all the number
2.多行注释
多行注释推荐使用老版C注释的方案
/*
* //注释内容
*
*/
etc:int sum; /*
int number; * sum_number , number is the score , summerl
char sunmmerl; * is the char sun_numer………..
double xgate; */
3.注释推荐用英语写,必要时可以使用中文
第四章:程序的版式
1.空行
(1)每个类声明,每个函数体声明之后都要加空行
(2)函数体内,逻辑上密切相关的语句不加空行,其他地方加空行分离
etc:
(1) #include <stdio.h>
void delay(int cnt_in) { While(cin_in--); }
void main(void) { delay(30000); Return 0; }
|
(2) While(1) { Int number=0; Int sum=0; Int x=0;
If(x>number) sun+=x;
else sun-=x;
} |
2.常量
(1)常量在程序头进行定义,统一为宏或者CONST的形式,不可夹杂定义
(2)避免使用常量作为方法(函数)的参数
3.变量
(1)变量定义位于程序开头,若在程序中间定义变量时,需要在程序开头添加注释
(2)定义变量时每行仅定义一个,多行时变量需对齐
(3)尽量避免使用全局变量,定义全局变量时需要加上说明性注释
4.缩进
(1)如果选用的IDE带自动的缩进功能就自动缩进
(2)若无缩进功能的话,手动以两个空格符作为缩进(为了程序在不同平台的可移植性建议手动缩进)
(3)函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
etc:
(1)自动缩进 #include <stdio.h> void main(void) { int x=0; int y=0; int sum=0;
scanf("%d %d",&x,&y); sum=x+y; if(x>y) printf("hello world");
} |
(2)手动缩进 #include <stdio.h> void main(void) { int x=0; int y=0; int sum=0;
scanf("%d %d",&x,&y); sum=x+y;
if(x>y) printf("hello world"); } |
5.宏定义
(1)宏定义常量时,需要加需要符合常量命名规则
(2)宏定义变量表达式时,需要加上括号
(3)在定义多个宏变量表达式时,需要用大括号封装成语句块
(4)使用宏时,不允许参数发生变化
6.结构化要求
(1)程序判断时,禁止使用两条等价的支路
(2)禁止GOTO语句
(3)当使用IF语句进行判断时,禁止使用else return , else goto
(4)多路分支时建议使用case语句
(5)循环时避免多个出口,如有特殊情况要中途退出循环,需加注释
(6)避免使用条件表达式去替代逻辑运算
(7)禁止将短语句写在同一行中
7.较长语句的处理办法
(1)长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读
(2)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首
etc:
(1) sum = x*x/100*average +x/x*100%average -x%x*100/average |
(2) Int delay(int cnt_in, Int dalaynumber_in, char string_in) |
8.主函数规定
(1)主函数建议使用int类型规定返回时,函数尾返回0
(2)主函数需要定义参数类型,一般为void,当需要使用命令行参数时需要附加注释
etc:
(1) Int main(void) { return 0; } |
(2) void main() {
} |
第五章:容错性约定
1.进行逻辑运算时,避免使用浮点型数据
2. 建议强转,避免使用默认的类型转换
3.多所有用户的输入,进行合法性检查
4.禁止在同一语句中多次应用++,--单目运算符,即每个语句仅能最多使用一个++或者—单目运算符
5.编程时,要防止差1错误
6.在程序测试时需要打开所有告警
7.认真处理程序所能遇到的各种出错情况