c/c++代码风格的部分总结

函数部分

0.函数名与返回值类型在语义上不可冲突。

在《c语言剖析》中 指出,getchar就犯了这样的错误,

char c;
c = getchar();
if(EOF == c)
{

}

etchar 函数的
返回值却是 int 类型,其原型为:
int getchar(void)。

由于 c 是 char 类型的,取值范围是[-128,127],如果宏 EOF 的值在 char 的取值范围之外,
EOF 的值将无法全部保存到 c 内,会发生截断,将 EOF 值的低  8 位保存到 c 里。这样 if 语
句有可能总是失败。这种潜在的危险,如果不是犯过一次错,肯怕很难发现。

1.每一个函数都必须有注释,即使函数短到可能只有几行。

2.每个函数定义结束之后以及每个文件结束之后都要加一个或若干个空行

3.在一个函数体内,变量定义与函数语句之间要加空行。

4.复杂的函数中,在分支语句,循环语句结束之后需要适当的注释,方便区
分各分支或循环体。

5.用缩行显示程序结构,使排版整齐,缩进量统一使用4个字符(不使用TAB
缩进)。//因为tab在不同环境下可能大小不一样。

6.在函数体的开始、结构/联合的定义、枚举的定义以及循环、判断等语句中
的代码都要采用缩行

7.尽量避免含有否定运算的条件表达式。如   if (!(num >= 1))

8.参数命名要恰当,顺序要合理。

编写字符串拷贝函数str_copy,它有两个参数。如果把参数名字起为str1 和str2

void str_copy (char *str1, char *str2);

可以把参数名字起得更有意义,如叫strSource 和strDestination。这样从名字上就可
以看出应该把strSource 拷贝到strDestination.

9.有时候函数不需要返回值,但为了增加灵活性如支持链式表达,可以附加
返回值。例如字符串拷贝函数strcpy 的原型:

char *strcpy(char *strDest,const char *strSrc);

strcpy 函数将strSrc 拷贝至输出参数strDest 中,同时函数的返回值又是strDest。这样做
并非多此一举,可以获得如下灵活性:

char str[20];
int length = strlen(strcpy(str, “木槿花”) );

10.不仅要检查输入参数的有效性,还要检查通过其它途径进入函数体内的变
量的有效性,例如全局变量、文件句柄等。

猜你喜欢

转载自blog.csdn.net/weixin_41143631/article/details/81240934