第一部分 C语言编程规范
在通信类软件中,C语言是常用的编程语言。在编写C语言程序的过程中,我们需要遵守的编程规范包括:
1. 程序的版式和注释
在C语言程序中,一般都包括了头文件(.h文件)和源文件(.c文件),它们的版式及注释如下:
第一,头文件的版式和注释。
头文件起到了一个辅助的作用,简要地反应出本程序的基本功能。头文件的内容包括:宏定义、结构体定义、函数的声明等。头文件的版式可采用以下的样式:
/***************************************************************
*版权所有 (C)2014,公司名称。
*
*文件名称:
*内容摘要:
*其它说明:
*当前版本:
*作 者:
*完成日期:
*
*修改记录1: //修改历史记录,包括修改日期、版本号、修改人及修改内容等
* 修改日期:
* 版本号:
* 修改人:
* 修改内容:
***************************************************************/
#ifndef _XXX_H // 防止头文件被重复引用
#define _XXX_H
/**************************************************************
相关宏定义
**************************************************************/
/**************************************************************
相关结构体定义
**************************************************************/
/**************************************************************
本程序中出现的函数的声明
**************************************************************/
#endif
第二,实现文件的版式和注释。
源文件(.c)文件是程序的核心,所有的工作都是在里面完成的。该文件里面主要是一些函数的实现。源文件可采用以下的版式来书写:
/***************************************************************
*版权所有 (C)2014,公司名称。
*
*文件名称:
*内容摘要:
*其它说明:
*当前版本:
*作 者:
*完成日期:
*
*修改记录1: //修改历史记录,包括修改日期、版本号、修改人及修改内容等
* 修改日期:
* 版本号:
* 修改人:
* 修改内容:
*
*修改记录2: //修改历史记录,包括修改日期、版本号、修改人及修改内容等
* 修改日期:
* 版本号:
* 修改人:
* 修改内容:
***************************************************************/
/**************************************************************
头文件引用
**************************************************************/
/**************************************************************
全局变量定义
**************************************************************/
/**************************************************************
函数实现
**************************************************************/
函数实现是程序的核心,函数头部的可采用如下的版式:
/**********************************************************************
*功能描述:
*输入参数:
*输出参数:
*返 回 值:
*其它说明:
*修改日期 版本号 修改人 修改内容
* ----------------------------------------------------------------------
* YYYYMMDD XXX Name YYY
***********************************************************************/
2. 变量及函数的命名
本小节以下面的代码为例进行说明:
/***************************************************************
*版权所有 (C)2014,company name。
*
*文件名称:example.c
*内容摘要:用于示范如何给变量和函数做规范的命名
*其它说明:无
*当前版本:V1.0
*作 者:XXX
*完成日期:YYYYMMDD
*
*修改记录1: //修改历史记录,包括修改日期、版本号、修改人及修改内容等
* 修改日期:
* 版本号:
* 修改人:
* 修改内容:
***************************************************************/
#include <stdio.h>
float ProcessFactorial(INT32iInputValue); // 函数声明
/**********************************************************************
*功能描述:主函数
*输入参数:无
*输出参数:无
*返 回 值:无
*其它说明:无
*修改日期 版本号 修改人 修改内容
*--------------------------------------------------------------------
* YYYYMMDD V1.0 XXX 创建
***********************************************************************/
int main()
{
int iInputValue = 0;
float fResult = 0.0;
printf("Please input an integer number: ");
scanf("%d", &iInputValue);
fResult = ProcessFactorial(iInputValue); // 调用求阶乘的函数
printf("%d!=%10.0f\n", iInputValue, fResult);
return 0;
}
/**********************************************************************
*功能描述:求一个数的阶乘
*输入参数:iInputValue-输入值
*输出参数:无
*返回值:求阶乘后的结果
*其它说明:无
*修改日期 版本号 修改人 修改内容
*--------------------------------------------------------------------
* YYYYMMDD V1.0 XXX 创建
***********************************************************************/
float ProcessFactorial(INT32 iInputValue)
{
float fResult = 0.0;
//先判断输入值是否小于0
if (iInputValue < 0)
{
printf("iInputValue <0, dataerror!");
return -1;
}
else
{
if (iInputValue == 0 || iInputValue == 1) // 0和1的阶乘是1
{
fResult = 1;
}
else
{
fResult =ProcessFactorial(iInputValue-1)*iInputValue; //执行递归调用
}
return(fResult);
}
}
有关变量及函数的命名,说明如下:
(1) 变量命名和函数命名应具备描述性,不要过度缩写。变量的命名应该使用名词,如fResult;函数的命名应该使用“命令性”动词,如ProcessFactorial。
(2) 不管是函数还是变量,它们的命名只有一个原则:让读者一眼就能够看出它们表达的意思。如ProcessFactorial函数,一看到它,就大概能够明白这是在求阶乘(如果你英语确实不好,那就另当别论了);iInputValue变量,表示输入值;fResult变量,表示结果值。我们要让代码自己来说话,而不是要作者向别人解释半天才行。
(3) 为了让读者看到一个变量就知道其类型,在变量的最前面,通常会有一个标识类型的字母。如iInputValue中的第一个字母“i”表示这是一个整型变量(“i”代表“int”),fResult中的第一个字母“f”表示这是一个浮点型变量(“f”代表“float”)。这样做,也是为了更进一步让读者对代码能够了然于心,能够很容易读懂,这样也省去了作者很多向别人解释的时间。
(4) 函数的功能要单一,不要设计多用途的函数;函数体的规模要小,将函数内的代码行数控制在项目中规定的范围之内。此外,要尽量避免函数带有“记忆”功能,相同的输入应该产生相同的输出。
(5) 始终要明白,我们第一是为人编写代码,其次才是计算机。如果只是计算机能够读懂的代码,不是好代码,也无法体现出一个编程人员的水平。
装载声明:原文地址