C中函数是C程序组成的重要部分.养成良好的编程习惯是很有必要的:方便自己阅读和他人阅读.
1.编码风格
1-1.注释:
函数的注释应该包括下面内容:
1).函数名;
2).日期;
3).编码者;
4).函数的功能描述;
5).参数说明:包括输入参数和输出参数;
6).函数的返回值;
模板如下:
/*******************************************************
*FunctionName :
*Date :
*Description :
*Param-Input :
*Param-Output :
*Return Code :
******************************************************/
1-2.空行隔开
为了代码更具可观性.需要空行隔开.需要用到空行隔开的如下:
1).函数与函数之间;
2).函数体内变量定义与函数语句之间;
1-3.tab缩进
tab缩进可以使代码更有层次感.使用tab缩进的原则如下:
1).递进关系的代码根据其子功能比母功能tab缩进;
2).并列关系的子功能保持列对齐;
1-4.换行
当函数中参数较长时,需要进行适当的划分.如:
void function(float very_long_var1,
float very_long_var2,
float very_long_var3)
1-5.当宏定义过长时,利用续行符'\'.如:
# #define CAR_SECTION __attribute__((used,section("car")))
# #define CAR(__name,__owner,__price) \
# static car car##__name CAR_SECTION = { \
# .name = MKSTR(__name),\
# .owner = MKSTR(__owner),\
# .price = __price,\
# }
2.函数设计的原则:
2-1.全局变量
尽量少用全局变量.如果别的文件需要访问本文件的一个全局变量,本文件应该开辟一个API可以被别的文件调用,在此API中实现对本文件的目标全局变量的访问.
2-2.参数命名
参数命名要"顾名思义",而且遵守"左边是输出,右边是输出"的原则.如:
void str_copy(char *strSrc,char *strDst);
2-3.对参数的合法性进行检测,尤其是指针参数.如下:
assert(NULL != p)
2-4.对传入参数进行改变时,尤其是指针参数,一定要注意传入地址.
2-5.尽量少用static局部变量.因为带有"记忆器"的函数本身就带有一定的隐患.
2-6.尽量少用递归函数.